diff --git a/.github/workflows/translation.yml b/.github/workflows/translation.yml
new file mode 100644
index 0000000000000..2887fff231fcf
--- /dev/null
+++ b/.github/workflows/translation.yml
@@ -0,0 +1,63 @@
+name: Automatic Translation
+
+on: workflow_dispatch
+
+jobs:
+ translation:
+ name: Translation Update
+ runs-on: ubuntu-latest
+ timeout-minutes: 60
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Use Node.js 16.x
+ uses: actions/setup-node@v1
+ with:
+ node-version: 16.x
+ registry-url: "https://registry.npmjs.org"
+
+ - name: Use Python 3.x
+ uses: actions/setup-python@v2
+ with:
+ python-version: "3.x"
+
+ - name: Install and Build
+ shell: bash
+ run: |
+ yarn --skip-integrity-check --network-timeout 100000
+ env:
+ NODE_OPTIONS: --max_old_space_size=4096
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9
+
+ - id: compute-next-version
+ run: |
+ export THEIA_CORE_VERSION=$(node -p "require(\"./packages/core/package.json\").version")
+ echo "NEXT_VERSION_NUMBER=$(npx -q semver@7 --increment minor $THEIA_CORE_VERSION)" >> $GITHUB_ENV
+
+ - name: Perform Automatic Translation
+ run: |
+ node ./scripts/translation-update.js
+ env:
+ DEEPL_API_TOKEN: ${{ secrets.DEEPL_API_TOKEN }}
+
+ - name: Get Actor User Data
+ uses: octokit/request-action@v2.x
+ id: actor_user_data
+ with:
+ route: GET /users/{user}
+ user: ${{ github.actor }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v4
+ with:
+ commiter: ${{ github.actor }} <${{ fromJson(steps.actor_user_data.outputs.data).email }}>
+ author: ${{ github.actor }} <${{ fromJson(steps.actor_user_data.outputs.data).email }}>
+ branch: bot/translation-update
+ title: Translation update for version ${{ env.NEXT_VERSION_NUMBER }}
+ commit-message: Translation update for version ${{ env.NEXT_VERSION_NUMBER }}
+ body: Automated translation update for Theia version ${{ env.NEXT_VERSION_NUMBER }}. Triggered by @${{ github.actor }}.
+ labels: localization
diff --git a/CHANGELOG.md b/CHANGELOG.md
index aae495d0f2434..66cd3e891066a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,16 +4,63 @@
- [Previous Changelogs](https://github.com/eclipse-theia/theia/tree/master/doc/changelogs/)
-## v1.28.0 - Unreleased
-
-- [plugin] added support for property `SourceControlInputBox#visible` [#11412](https://github.com/eclipse-theia/theia/pull/11412) - Contributed on behalf of STMicroelectronics
+## v1.29.0 - unreleased
+
+- [plugin] added support for `EvaluatableExpressions` [#11484](https://github.com/eclipse-theia/theia/pull/11484) - Contributed on behalf of STMicroelectronics
+
+[Breaking Changes:](#breaking_changes_1.29.0)
+
+- [core] `updateThemePreference` and `updateThemeFromPreference` removed from `CommonFrontendContribution`. Corresponding functionality as been moved to the respective theme service. `load` removed from `IconThemeService` [#11473](https://github.com/eclipse-theia/theia/issues/11473)
+- [core] updated `react` and `react-dom` dependencies to version 18, which introduce new root API for rendering (replaces ReactDOM.render). Since React no longer supports render callbacks, the `onRender` field from `ReactDialog` and `ReactWidget` was removed. [#11455](https://github.com/eclipse-theia/theia/pull/11455) - Contributed on behalf of STMicroelectronics
+
+## v1.28.0 - 7/28/2022
+
+- [cli] improved error handling when interacting with the API [#11454](https://github.com/eclipse-theia/theia/issues/11454)
+- [core] added better support when unloading language packs [#11338](https://github.com/eclipse-theia/theia/pull/11338)
+- [core] added proper support for null-value RPC encoding [#11396](https://github.com/eclipse-theia/theia/pull/11396)
+- [core] updated `WidgetManager` to compare keys using deep equal [#11450](https://github.com/eclipse-theia/theia/issues/11450)
+- [core] updated handling to pass `StopReason` to `OnWillStopAction` [#11428](https://github.com/eclipse-theia/theia/issues/11428)
+- [core] updated the `caption` rendering for `ViewContainer` [#11422](https://github.com/eclipse-theia/theia/pull/11422)
+- [debug] added support for `InstructionBreakpoints` [#111866](https://github.com/eclipse-theia/theia/pull/11186)
+- [debug] added support for the `Disassembly` view [#11186](https://github.com/eclipse-theia/theia/pull/11186)
+- [debug] added the ability to dismiss exception widgets [#11441](https://github.com/eclipse-theia/theia/issues/11441)
+- [debug] fixed an issue causing an infinite loop with child debug sessions [#11388](https://github.com/eclipse-theia/theia/pull/11388)
+- [file-search] updated `vscode-ripgrep` to `@vscode-ripgrep@1.14.2` [#11389](https://github.com/eclipse-theia/theia/pull/11389)
+- [filesystem] fixed implementation of `FileChangeEvent#contains` [#11409](https://github.com/eclipse-theia/theia/pull/11409)
+- [git] upgraded `dugite-extra` to `v0.1.16` [#11445](https://github.com/eclipse-theia/theia/issues/11445)
+- [keymaps] added handling for multiple keybindings for a given command [#11363](https://github.com/eclipse-theia/theia/pull/11363)
+- [markers] updated rendering of markers [#11408](https://github.com/eclipse-theia/theia/pull/11408)
+- [monaco] added localization support for commands contributed by monaco [#11434](https://github.com/eclipse-theia/theia/pull/11434)
+- [monaco] fixed `activeItem` handling in the `QuickPick` menu [#11438](https://github.com/eclipse-theia/theia/pull/11438)
+- [monaco] improved `tokenization` performance [#11416](https://github.com/eclipse-theia/theia/pull/11416)
+- [monaco] upgraded monaco to VS Code `v1.67.2` [#11331](https://github.com/eclipse-theia/theia/pull/11331)
+- [navigator] updated `New File` and `New Folder` to only appear for folders [#11453](https://github.com/eclipse-theia/theia/issues/11453)
+- [navigator] updated explorer toolbar items [#11429](https://github.com/eclipse-theia/theia/pull/11429)
+- [plugin] added support for `activeParameter` in the `SignatureInformation` VS Code API [#11426](https://github.com/eclipse-theia/theia/pull/11426)
+- [plugin] added support for `title` in the `QuickPickOptions` VS Code API [#11418](https://github.com/eclipse-theia/theia/pull/11418)
+- [plugin] added support for `vscode.env` VS Code API namespace [#11446](https://github.com/eclipse-theia/theia/issues/11446)
+- [plugin] added support for all selected URIs in command execution [#11433](https://github.com/eclipse-theia/theia/pull/11433)
+- [plugin] added support for the `DebugProtocolBreakpoint` and `DebugProtocolSource` VS Code API [#10011](https://github.com/eclipse-theia/theia/issues/10011) - Contributed on behalf of STMicroelectronics
+- [plugin] added support for the `TerminalOptions#message` VS Code API [#11385](https://github.com/eclipse-theia/theia/pull/11835)
+- [plugin] added support for the `workbench.action.saveWorkspaceAs` command [#11395](https://github.com/eclipse-theia/theia/pull/11395)
+- [plugin] added support for the property `SourceControlInputBox#visible` [#11412](https://github.com/eclipse-theia/theia/pull/11412) - Contributed on behalf of STMicroelectronics
+- [plugin] updated `LocationLink` definition [#11465](https://github.com/eclipse-theia/theia/issues/11456)
+- [preferences] added handling to properly dispose the model after saving [#11410](https://github.com/eclipse-theia/theia/pull/11410)
+- [process] improved performance of `lsof` on `macOS` [#11411](https://github.com/eclipse-theia/theia/pull/11411)
+- [search-in-workspace] updated `Find in Folder` to only apply for folders [#11456](https://github.com/eclipse-theia/theia/issues/11456)
+- [search-in-workspace] updated `vscode-ripgrep` to `@vscode-ripgrep@1.14.2` [#11389](https://github.com/eclipse-theia/theia/pull/11389)
+- [terminal] added output buffering support [#11449](https://github.com/eclipse-theia/theia/issues/11449)
+- [variable-resolver] added handling for user cancellation of variables [#11406](https://github.com/eclipse-theia/theia/pull/11406)
+- [vsx-registry] updated the extensions view to display a message when failing to fetch extensions [#11457](https://github.com/eclipse-theia/theia/issues/11457)
[Breaking Changes:](#breaking_changes_1.28.0)
- [core] `handleDefault`, `handleElectronDefault` method no longer called in `BrowserMainMenuFactory.registerMenu()`, `DynamicMenuWidget.buildSubMenus()` or `ElectronMainMenuFactory.fillSubmenus()`. Override the respective calling function rather than `handleDefault`. The argument to each of the three methods listed above is now `MenuNode` and not `CompositeMenuNode`, and the methods are truly recursive and called on entire menu tree. `ActionMenuNode.action` removed; access relevant field on `ActionMenuNode.command`, `.when` etc. [#11290](https://github.com/eclipse-theia/theia/pull/11290)
- [core] renamed `CommonCommands.NEW_FILE` to `CommonCommands.NEW_UNTITLED_FILE` [#11429](https://github.com/eclipse-theia/theia/pull/11429)
-- [plugin-ext] `CodeEditorWidgetUtil` moved to `packages/plugin-ext/src/main/browser/menus/vscode-theia-menu-mappings.ts`. `MenusContributionPointHandler` extensively refactored. See PR description for details. [#11290](https://github.com/eclipse-theia/theia/pull/11290)
-- [plugin] added support for `DebugProtocolBreakpoint` and `DebugProtocolSource` [#10011](https://github.com/eclipse-theia/theia/issues/10011) - Contributed on behalf of STMicroelectronics
+- [plugin] `CodeEditorWidgetUtil` moved to `packages/plugin-ext/src/main/browser/menus/vscode-theia-menu-mappings.ts`. `MenusContributionPointHandler` extensively refactored. See PR description for details. [#11290](https://github.com/eclipse-theia/theia/pull/11290)
+- [plugin] `LocalFilePluginDeployerResolver` moved to `plugin-ext` `local-vsix-file-plugin-deployer-resolver.ts`. [#11466](https://github.com/eclipse-theia/theia/issues/11466)
+- [plugin] removed `Plugin: Deploy Plugin by Id` command [#11417](https://github.com/eclipse-theia/theia/pull/11417)
+- [vsx-registry] removed `downloadPath` field from `VSXExtensionResolver`. Plugins are now placed directly in user plugin directory. [#11466](https://github.com/eclipse-theia/theia/issues/11466)
## v1.27.0 - 6/30/2022
@@ -273,7 +320,7 @@
- [core] fixed tail decoration rendering for the `TreeWidget` [#10898](https://github.com/eclipse-theia/theia/pull/10898)
- [core] improved tabbar styling [#10822](https://github.com/eclipse-theia/theia/pull/10822)
- [core] updated sash visibility handling [#10941](https://github.com/eclipse-theia/theia/pull/10941)
-- [core] updated type check for `TreeContainerPRops` [#10881](https://github.com/eclipse-theia/theia/pull/10881)
+- [core] updated type check for `TreeContainerProps` [#10881](https://github.com/eclipse-theia/theia/pull/10881)
- [core] updated validation warning for `undefined` preference values [#10887](https://github.com/eclipse-theia/theia/pull/10887)
- [core] updated view container styling [#10854](https://github.com/eclipse-theia/theia/pull/10854)
- [debug] fixed issue where the current debug configuration was not updated [#10917](https://github.com/eclipse-theia/theia/pull/10917)
@@ -389,7 +436,7 @@
[Breaking Changes:](#breaking_changes_1.23.0)
-- [core] moved methods `attachReadyToShow`, `restoreMaximizedState`, `attachCloseListeners`, `handleStopRequest`, `checkSafeToStop`, `handleReload`, `reload` from `ElectronMainAPplication` into new class `TheiaElectronWindow` [#10600](https://github.com/eclipse-theia/theia/pull/10600)
+- [core] moved methods `attachReadyToShow`, `restoreMaximizedState`, `attachCloseListeners`, `handleStopRequest`, `checkSafeToStop`, `handleReload`, `reload` from `ElectronMainApplication` into new class `TheiaElectronWindow` [#10600](https://github.com/eclipse-theia/theia/pull/10600)
- [core] removed all of our own custom HTTP Polling implementation [#10514](https://github.com/eclipse-theia/theia/pull/10514)
- [core] removed method `attachGlobalShortcuts` from `ElectronMainApplication`. Attaching shortcuts in that way interfered with internal shortcuts. Use internal keybindings instead of global shortcuts. [#10704](https://github.com/eclipse-theia/theia/pull/10704)
- [core] removed the `Event.maxListeners` field; The feature still exists but please use `Event.getMaxListeners(event)` and `Event.setMaxListeners(event, maxListeners)` instead.
diff --git a/configs/errors.eslintrc.json b/configs/errors.eslintrc.json
index 02b9ecbe16a30..f61b8bd10287a 100644
--- a/configs/errors.eslintrc.json
+++ b/configs/errors.eslintrc.json
@@ -62,6 +62,7 @@
"no-throw-literal": "error",
"no-trailing-spaces": "error",
"no-underscore-dangle": "off",
+ "no-unreachable": "error",
"no-unused-expressions": "error",
"no-var": "error",
"no-void": "error",
diff --git a/dev-packages/application-manager/package.json b/dev-packages/application-manager/package.json
index 999e5afa1d088..adc73a00ca6e5 100644
--- a/dev-packages/application-manager/package.json
+++ b/dev-packages/application-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/application-manager",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia application manager API.",
"publishConfig": {
"access": "public"
@@ -33,8 +33,8 @@
"@babel/plugin-transform-classes": "^7.10.0",
"@babel/plugin-transform-runtime": "^7.10.0",
"@babel/preset-env": "^7.10.0",
- "@theia/application-package": "1.27.0",
- "@theia/ffmpeg": "1.27.0",
+ "@theia/application-package": "1.28.0",
+ "@theia/ffmpeg": "1.28.0",
"@types/fs-extra": "^4.0.2",
"@types/semver": "^7.3.8",
"babel-loader": "^8.2.2",
@@ -70,7 +70,7 @@
}
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0",
+ "@theia/ext-scripts": "1.28.0",
"@types/node-abi": "*"
},
"nyc": {
diff --git a/dev-packages/application-package/package.json b/dev-packages/application-package/package.json
index a975cb546d612..0682611ee97aa 100644
--- a/dev-packages/application-package/package.json
+++ b/dev-packages/application-package/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/application-package",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia application package API.",
"publishConfig": {
"access": "public"
@@ -42,7 +42,7 @@
"write-json-file": "^2.2.0"
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0"
+ "@theia/ext-scripts": "1.28.0"
},
"nyc": {
"extends": "../../configs/nyc.json"
diff --git a/dev-packages/cli/package.json b/dev-packages/cli/package.json
index 6c5ac2d7469de..37bfc761030b1 100644
--- a/dev-packages/cli/package.json
+++ b/dev-packages/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/cli",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia CLI.",
"publishConfig": {
"access": "public"
@@ -30,12 +30,12 @@
"clean": "theiaext clean"
},
"dependencies": {
- "@theia/application-manager": "1.27.0",
- "@theia/application-package": "1.27.0",
- "@theia/ffmpeg": "1.27.0",
- "@theia/localization-manager": "1.27.0",
- "@theia/ovsx-client": "1.27.0",
- "@theia/request": "1.27.0",
+ "@theia/application-manager": "1.28.0",
+ "@theia/application-package": "1.28.0",
+ "@theia/ffmpeg": "1.28.0",
+ "@theia/localization-manager": "1.28.0",
+ "@theia/ovsx-client": "1.28.0",
+ "@theia/request": "1.28.0",
"@types/chai": "^4.2.7",
"@types/mocha": "^5.2.7",
"@types/node-fetch": "^2.5.7",
diff --git a/dev-packages/cli/src/download-plugins.ts b/dev-packages/cli/src/download-plugins.ts
index 9a0cee36b730c..9216a1071688e 100644
--- a/dev-packages/cli/src/download-plugins.ts
+++ b/dev-packages/cli/src/download-plugins.ts
@@ -147,13 +147,17 @@ export default async function downloadPlugins(options: DownloadPluginsOptions =
// De-duplicate extension ids to only download each once:
const ids = new Set(dependencies.flat());
await parallelOrSequence(...Array.from(ids, id => async () => {
- const extension = await client.getLatestCompatibleExtensionVersion(id);
- const version = extension?.version;
- const downloadUrl = extension?.files.download;
- if (downloadUrl) {
- await downloadPlugin({ id, downloadUrl, version });
- } else {
- failures.push(`No download url for extension pack ${id} (${version})`);
+ try {
+ const extension = await client.getLatestCompatibleExtensionVersion(id);
+ const version = extension?.version;
+ const downloadUrl = extension?.files.download;
+ if (downloadUrl) {
+ await downloadPlugin({ id, downloadUrl, version });
+ } else {
+ failures.push(`No download url for extension pack ${id} (${version})`);
+ }
+ } catch (err) {
+ failures.push(err.message);
}
}));
};
diff --git a/dev-packages/ffmpeg/package.json b/dev-packages/ffmpeg/package.json
index 7bec284246e17..3a4ce1e0cc5b0 100644
--- a/dev-packages/ffmpeg/package.json
+++ b/dev-packages/ffmpeg/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/ffmpeg",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia FFMPEG reader utility.",
"publishConfig": {
"access": "public"
diff --git a/dev-packages/localization-manager/package.json b/dev-packages/localization-manager/package.json
index 405d0d211bd79..f00ceeb069909 100644
--- a/dev-packages/localization-manager/package.json
+++ b/dev-packages/localization-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/localization-manager",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia localization manager API.",
"publishConfig": {
"access": "public"
@@ -39,7 +39,7 @@
"typescript": "~4.5.5"
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0"
+ "@theia/ext-scripts": "1.28.0"
},
"nyc": {
"extends": "../../configs/nyc.json"
diff --git a/dev-packages/localization-manager/src/localization-manager.spec.ts b/dev-packages/localization-manager/src/localization-manager.spec.ts
index 41202ea4f7215..afc9c6d07a537 100644
--- a/dev-packages/localization-manager/src/localization-manager.spec.ts
+++ b/dev-packages/localization-manager/src/localization-manager.spec.ts
@@ -77,4 +77,15 @@ describe('localization-manager#translateLanguage', () => {
a: 'b'
});
});
+
+ it('should keep placeholders intact', async () => {
+ const input = {
+ key: '{1} {0}'
+ };
+ const target = {};
+ await manager.translateLanguage(input, target, 'EN', defaultOptions);
+ assert.deepStrictEqual(target, {
+ key: '[{1} {0}]'
+ });
+ });
});
diff --git a/dev-packages/localization-manager/src/localization-manager.ts b/dev-packages/localization-manager/src/localization-manager.ts
index 67fe17d004300..fabedebf973fa 100644
--- a/dev-packages/localization-manager/src/localization-manager.ts
+++ b/dev-packages/localization-manager/src/localization-manager.ts
@@ -92,10 +92,12 @@ export class LocalizationManager {
free_api: options.freeApi,
target_lang: targetLanguage.toUpperCase() as DeeplLanguage,
source_lang: options.sourceLanguage?.toUpperCase() as DeeplLanguage,
- text: map.text
+ text: map.text.map(e => this.addIgnoreTags(e)),
+ tag_handling: ['xml'],
+ ignore_tags: ['x']
});
translationResponse.translations.forEach(({ text }, i) => {
- map.localize(i, text);
+ map.localize(i, this.removeIgnoreTags(text));
});
console.log(chalk.green(`Successfully translated ${map.text.length} value${map.text.length > 1 ? 's' : ''} for language "${targetLanguage}"`));
} catch (e) {
@@ -106,6 +108,14 @@ export class LocalizationManager {
}
}
+ protected addIgnoreTags(text: string): string {
+ return text.replace(/(\{\d*\})/g, '$1');
+ }
+
+ protected removeIgnoreTags(text: string): string {
+ return text.replace(/(\{\d+\})<\/x>/g, '$1');
+ }
+
protected buildLocalizationMap(source: Localization, target: Localization): LocalizationMap {
const functionMap = new Map void>();
const text: string[] = [];
diff --git a/dev-packages/ovsx-client/package.json b/dev-packages/ovsx-client/package.json
index 38f719b60b146..dbebe487a0421 100644
--- a/dev-packages/ovsx-client/package.json
+++ b/dev-packages/ovsx-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/ovsx-client",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia Open-VSX Client",
"publishConfig": {
"access": "public"
@@ -29,7 +29,7 @@
"watch": "theiaext watch"
},
"dependencies": {
- "@theia/request": "1.27.0",
+ "@theia/request": "1.28.0",
"semver": "^5.4.1"
}
}
diff --git a/dev-packages/ovsx-client/src/ovsx-types.ts b/dev-packages/ovsx-client/src/ovsx-types.ts
index 17e9d596fa4a4..b260fc7ec4271 100644
--- a/dev-packages/ovsx-client/src/ovsx-types.ts
+++ b/dev-packages/ovsx-client/src/ovsx-types.ts
@@ -164,10 +164,8 @@ export interface VSXResponseError extends Error {
}
export namespace VSXResponseError {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function is(error: any): error is VSXResponseError {
- return !!error && typeof error === 'object'
- && 'statusCode' in error && typeof error['statusCode'] === 'number';
+ export function is(error: unknown): error is VSXResponseError {
+ return !!error && typeof error === 'object' && typeof (error as VSXResponseError).statusCode === 'number';
}
}
diff --git a/dev-packages/private-eslint-plugin/package.json b/dev-packages/private-eslint-plugin/package.json
index 716fc323a1d63..d295b1168330c 100644
--- a/dev-packages/private-eslint-plugin/package.json
+++ b/dev-packages/private-eslint-plugin/package.json
@@ -1,16 +1,16 @@
{
"private": true,
"name": "@theia/eslint-plugin",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Custom ESLint rules for developing Theia extensions and applications",
"main": "index.js",
"scripts": {
"prepare": "tsc -b"
},
"dependencies": {
- "@theia/core": "1.27.0",
- "@theia/ext-scripts": "1.27.0",
- "@theia/re-exports": "1.27.0",
+ "@theia/core": "1.28.0",
+ "@theia/ext-scripts": "1.28.0",
+ "@theia/re-exports": "1.28.0",
"js-levenshtein": "^1.1.6"
}
}
diff --git a/dev-packages/private-ext-scripts/package.json b/dev-packages/private-ext-scripts/package.json
index 6119b901c8fa5..4c9a0fcec91de 100644
--- a/dev-packages/private-ext-scripts/package.json
+++ b/dev-packages/private-ext-scripts/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "@theia/ext-scripts",
- "version": "1.27.0",
+ "version": "1.28.0",
"license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0",
"description": "NPM scripts for Theia packages.",
"bin": {
diff --git a/dev-packages/private-re-exports/package.json b/dev-packages/private-re-exports/package.json
index f9376282d7739..eaa2a8d325ea3 100644
--- a/dev-packages/private-re-exports/package.json
+++ b/dev-packages/private-re-exports/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "@theia/re-exports",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia re-export helper functions and scripts.",
"main": "lib/index.js",
"engines": {
diff --git a/dev-packages/request/package.json b/dev-packages/request/package.json
index 4f6b40b3de806..50d4e2cbcfd6b 100644
--- a/dev-packages/request/package.json
+++ b/dev-packages/request/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/request",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia Proxy-Aware Request Service",
"publishConfig": {
"access": "public"
diff --git a/dev-packages/request/src/common-request-service.ts b/dev-packages/request/src/common-request-service.ts
index e56c0a05f1b01..3506fecb3702e 100644
--- a/dev-packages/request/src/common-request-service.ts
+++ b/dev-packages/request/src/common-request-service.ts
@@ -57,7 +57,7 @@ export namespace RequestContext {
export function asText(context: RequestContext): string {
if (!isSuccess(context)) {
- throw new Error(`Server returned code ${context.res.statusCode} for request to '${context.url}'`);
+ throw new Error(`Server returned code ${context.res.statusCode}.`);
}
if (hasNoContent(context)) {
return '';
diff --git a/doc/Migration.md b/doc/Migration.md
index a7493f02aa72c..85439a2cc4be8 100644
--- a/doc/Migration.md
+++ b/doc/Migration.md
@@ -19,6 +19,26 @@ For example:
}
```
+### v1.29.0
+
+#### React 18 update
+
+The `react` and `react-dom` dependencies were upgraded to version 18. Some relevant changes include:
+
+ - `ReactDOM.render` is now deprecated and is replaced by `createRoot` from `react-dom/client`
+ - the new API no longer supports render callbacks
+ - updates in promises, setTimeout, event handlers are automatically batched
+
+ Because the currently used version of `react-virtualized` still depends on React 16, a `resolutions` block is needed in the `package.json` for the React 18 dependencies:
+
+ ```json
+"resolutions": {
+ "@types/react": "18.0.15",
+ "@types/react-dom": "18.0.6"
+ ...
+ }
+ ```
+
### v1.24.0
#### node-gyp 8.4.1
diff --git a/doc/Publishing.md b/doc/Publishing.md
index 5762f4207cadf..c5593787be16d 100644
--- a/doc/Publishing.md
+++ b/doc/Publishing.md
@@ -46,6 +46,7 @@ Here is an [example](https://community.theia-ide.org/t/0-11-0-release/373).
- Entries should be in the past tense (ex: 'Added support...').
- Ensure that merged pull-requests for the given release are added to the corresponding release [milestone](https://github.com/eclipse-theia/theia/milestones):
- Generally, milestones are automatically added on merge however not for forks. It is therefore important to manually add such contributions to the milestone for the time being.
+- Run the [automatic translation workflow](https://github.com/eclipse-theia/theia/actions/workflows/translation.yml) and merge the created pull request if necessary.
## Pre-Publishing Steps
diff --git a/examples/api-samples/package.json b/examples/api-samples/package.json
index ae90c9424bb90..485289a57ffd2 100644
--- a/examples/api-samples/package.json
+++ b/examples/api-samples/package.json
@@ -1,19 +1,19 @@
{
"private": true,
"name": "@theia/api-samples",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia - Example code to demonstrate Theia API",
"dependencies": {
- "@theia/core": "1.27.0",
- "@theia/file-search": "1.27.0",
- "@theia/filesystem": "1.27.0",
- "@theia/monaco": "1.27.0",
+ "@theia/core": "1.28.0",
+ "@theia/file-search": "1.28.0",
+ "@theia/filesystem": "1.28.0",
+ "@theia/monaco": "1.28.0",
"@theia/monaco-editor-core": "1.67.2",
- "@theia/output": "1.27.0",
- "@theia/search-in-workspace": "1.27.0",
- "@theia/toolbar": "1.27.0",
- "@theia/vsx-registry": "1.27.0",
- "@theia/workspace": "1.27.0"
+ "@theia/output": "1.28.0",
+ "@theia/search-in-workspace": "1.28.0",
+ "@theia/toolbar": "1.28.0",
+ "@theia/vsx-registry": "1.28.0",
+ "@theia/workspace": "1.28.0"
},
"theiaExtensions": [
{
@@ -52,6 +52,6 @@
"clean": "theiaext clean"
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0"
+ "@theia/ext-scripts": "1.28.0"
}
}
diff --git a/examples/api-tests/package.json b/examples/api-tests/package.json
index d4e19b0fb358d..360ad1a96bdc1 100644
--- a/examples/api-tests/package.json
+++ b/examples/api-tests/package.json
@@ -1,9 +1,9 @@
{
"name": "@theia/api-tests",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia API tests",
"dependencies": {
- "@theia/core": "1.27.0"
+ "@theia/core": "1.28.0"
},
"license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0",
"repository": {
diff --git a/examples/browser/package.json b/examples/browser/package.json
index 2fb228a602e95..f7237671c5f17 100644
--- a/examples/browser/package.json
+++ b/examples/browser/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "@theia/example-browser",
- "version": "1.27.0",
+ "version": "1.28.0",
"license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0",
"theia": {
"frontend": {
@@ -14,47 +14,47 @@
}
},
"dependencies": {
- "@theia/api-samples": "1.27.0",
- "@theia/bulk-edit": "1.27.0",
- "@theia/callhierarchy": "1.27.0",
- "@theia/console": "1.27.0",
- "@theia/core": "1.27.0",
- "@theia/debug": "1.27.0",
- "@theia/editor": "1.27.0",
- "@theia/editor-preview": "1.27.0",
- "@theia/file-search": "1.27.0",
- "@theia/filesystem": "1.27.0",
- "@theia/getting-started": "1.27.0",
- "@theia/git": "1.27.0",
- "@theia/keymaps": "1.27.0",
- "@theia/markers": "1.27.0",
- "@theia/messages": "1.27.0",
- "@theia/metrics": "1.27.0",
- "@theia/mini-browser": "1.27.0",
- "@theia/monaco": "1.27.0",
- "@theia/navigator": "1.27.0",
- "@theia/outline-view": "1.27.0",
- "@theia/output": "1.27.0",
- "@theia/plugin-dev": "1.27.0",
- "@theia/plugin-ext": "1.27.0",
- "@theia/plugin-ext-vscode": "1.27.0",
- "@theia/plugin-metrics": "1.27.0",
- "@theia/preferences": "1.27.0",
- "@theia/preview": "1.27.0",
- "@theia/process": "1.27.0",
- "@theia/property-view": "1.27.0",
- "@theia/scm": "1.27.0",
- "@theia/scm-extra": "1.27.0",
- "@theia/search-in-workspace": "1.27.0",
- "@theia/task": "1.27.0",
- "@theia/terminal": "1.27.0",
- "@theia/timeline": "1.27.0",
- "@theia/toolbar": "1.27.0",
- "@theia/typehierarchy": "1.27.0",
- "@theia/userstorage": "1.27.0",
- "@theia/variable-resolver": "1.27.0",
- "@theia/vsx-registry": "1.27.0",
- "@theia/workspace": "1.27.0"
+ "@theia/api-samples": "1.28.0",
+ "@theia/bulk-edit": "1.28.0",
+ "@theia/callhierarchy": "1.28.0",
+ "@theia/console": "1.28.0",
+ "@theia/core": "1.28.0",
+ "@theia/debug": "1.28.0",
+ "@theia/editor": "1.28.0",
+ "@theia/editor-preview": "1.28.0",
+ "@theia/file-search": "1.28.0",
+ "@theia/filesystem": "1.28.0",
+ "@theia/getting-started": "1.28.0",
+ "@theia/git": "1.28.0",
+ "@theia/keymaps": "1.28.0",
+ "@theia/markers": "1.28.0",
+ "@theia/messages": "1.28.0",
+ "@theia/metrics": "1.28.0",
+ "@theia/mini-browser": "1.28.0",
+ "@theia/monaco": "1.28.0",
+ "@theia/navigator": "1.28.0",
+ "@theia/outline-view": "1.28.0",
+ "@theia/output": "1.28.0",
+ "@theia/plugin-dev": "1.28.0",
+ "@theia/plugin-ext": "1.28.0",
+ "@theia/plugin-ext-vscode": "1.28.0",
+ "@theia/plugin-metrics": "1.28.0",
+ "@theia/preferences": "1.28.0",
+ "@theia/preview": "1.28.0",
+ "@theia/process": "1.28.0",
+ "@theia/property-view": "1.28.0",
+ "@theia/scm": "1.28.0",
+ "@theia/scm-extra": "1.28.0",
+ "@theia/search-in-workspace": "1.28.0",
+ "@theia/task": "1.28.0",
+ "@theia/terminal": "1.28.0",
+ "@theia/timeline": "1.28.0",
+ "@theia/toolbar": "1.28.0",
+ "@theia/typehierarchy": "1.28.0",
+ "@theia/userstorage": "1.28.0",
+ "@theia/variable-resolver": "1.28.0",
+ "@theia/vsx-registry": "1.28.0",
+ "@theia/workspace": "1.28.0"
},
"scripts": {
"clean": "theia clean",
@@ -75,6 +75,6 @@
"watch:compile": "tsc -b -w"
},
"devDependencies": {
- "@theia/cli": "1.27.0"
+ "@theia/cli": "1.28.0"
}
}
diff --git a/examples/electron/package.json b/examples/electron/package.json
index ac618728fb0f1..02f3f8c14935c 100644
--- a/examples/electron/package.json
+++ b/examples/electron/package.json
@@ -2,7 +2,7 @@
"private": true,
"name": "@theia/example-electron",
"productName": "Theia Electron Example",
- "version": "1.27.0",
+ "version": "1.28.0",
"main": "src-gen/frontend/electron-main.js",
"license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0",
"theia": {
@@ -14,48 +14,48 @@
}
},
"dependencies": {
- "@theia/api-samples": "1.27.0",
- "@theia/bulk-edit": "1.27.0",
- "@theia/callhierarchy": "1.27.0",
- "@theia/console": "1.27.0",
- "@theia/core": "1.27.0",
- "@theia/debug": "1.27.0",
- "@theia/editor": "1.27.0",
- "@theia/editor-preview": "1.27.0",
- "@theia/electron": "1.27.0",
- "@theia/external-terminal": "1.27.0",
- "@theia/file-search": "1.27.0",
- "@theia/filesystem": "1.27.0",
- "@theia/getting-started": "1.27.0",
- "@theia/git": "1.27.0",
- "@theia/keymaps": "1.27.0",
- "@theia/markers": "1.27.0",
- "@theia/messages": "1.27.0",
- "@theia/metrics": "1.27.0",
- "@theia/mini-browser": "1.27.0",
- "@theia/monaco": "1.27.0",
- "@theia/navigator": "1.27.0",
- "@theia/outline-view": "1.27.0",
- "@theia/output": "1.27.0",
- "@theia/plugin-dev": "1.27.0",
- "@theia/plugin-ext": "1.27.0",
- "@theia/plugin-ext-vscode": "1.27.0",
- "@theia/preferences": "1.27.0",
- "@theia/preview": "1.27.0",
- "@theia/process": "1.27.0",
- "@theia/property-view": "1.27.0",
- "@theia/scm": "1.27.0",
- "@theia/scm-extra": "1.27.0",
- "@theia/search-in-workspace": "1.27.0",
- "@theia/task": "1.27.0",
- "@theia/terminal": "1.27.0",
- "@theia/timeline": "1.27.0",
- "@theia/toolbar": "1.27.0",
- "@theia/typehierarchy": "1.27.0",
- "@theia/userstorage": "1.27.0",
- "@theia/variable-resolver": "1.27.0",
- "@theia/vsx-registry": "1.27.0",
- "@theia/workspace": "1.27.0"
+ "@theia/api-samples": "1.28.0",
+ "@theia/bulk-edit": "1.28.0",
+ "@theia/callhierarchy": "1.28.0",
+ "@theia/console": "1.28.0",
+ "@theia/core": "1.28.0",
+ "@theia/debug": "1.28.0",
+ "@theia/editor": "1.28.0",
+ "@theia/editor-preview": "1.28.0",
+ "@theia/electron": "1.28.0",
+ "@theia/external-terminal": "1.28.0",
+ "@theia/file-search": "1.28.0",
+ "@theia/filesystem": "1.28.0",
+ "@theia/getting-started": "1.28.0",
+ "@theia/git": "1.28.0",
+ "@theia/keymaps": "1.28.0",
+ "@theia/markers": "1.28.0",
+ "@theia/messages": "1.28.0",
+ "@theia/metrics": "1.28.0",
+ "@theia/mini-browser": "1.28.0",
+ "@theia/monaco": "1.28.0",
+ "@theia/navigator": "1.28.0",
+ "@theia/outline-view": "1.28.0",
+ "@theia/output": "1.28.0",
+ "@theia/plugin-dev": "1.28.0",
+ "@theia/plugin-ext": "1.28.0",
+ "@theia/plugin-ext-vscode": "1.28.0",
+ "@theia/preferences": "1.28.0",
+ "@theia/preview": "1.28.0",
+ "@theia/process": "1.28.0",
+ "@theia/property-view": "1.28.0",
+ "@theia/scm": "1.28.0",
+ "@theia/scm-extra": "1.28.0",
+ "@theia/search-in-workspace": "1.28.0",
+ "@theia/task": "1.28.0",
+ "@theia/terminal": "1.28.0",
+ "@theia/timeline": "1.28.0",
+ "@theia/toolbar": "1.28.0",
+ "@theia/typehierarchy": "1.28.0",
+ "@theia/userstorage": "1.28.0",
+ "@theia/variable-resolver": "1.28.0",
+ "@theia/vsx-registry": "1.28.0",
+ "@theia/workspace": "1.28.0"
},
"scripts": {
"build": "yarn -s compile && yarn -s bundle",
@@ -73,7 +73,7 @@
"watch:compile": "tsc -b -w"
},
"devDependencies": {
- "@theia/cli": "1.27.0",
+ "@theia/cli": "1.28.0",
"electron": "^15.3.5"
}
}
diff --git a/examples/playwright/package.json b/examples/playwright/package.json
index cb119ebe8622b..3b7e3d05ac754 100644
--- a/examples/playwright/package.json
+++ b/examples/playwright/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/playwright",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "System tests for Theia",
"license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0",
"repository": {
diff --git a/lerna.json b/lerna.json
index 975a47942d260..be27009f2dfc3 100644
--- a/lerna.json
+++ b/lerna.json
@@ -2,7 +2,7 @@
"lerna": "2.2.0",
"npmClient": "yarn",
"useWorkspaces": true,
- "version": "1.27.0",
+ "version": "1.28.0",
"command": {
"run": {
"stream": true
diff --git a/package.json b/package.json
index 1c79f066d9484..a713dd5141c98 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,9 @@
"node": ">=14"
},
"resolutions": {
- "**/@types/node": "14"
+ "**/@types/node": "14",
+ "@types/react": "18.0.15",
+ "@types/react-dom": "18.0.6"
},
"devDependencies": {
"@types/chai": "4.3.0",
diff --git a/packages/bulk-edit/package.json b/packages/bulk-edit/package.json
index 7e322326ea30c..fb71a345f8500 100644
--- a/packages/bulk-edit/package.json
+++ b/packages/bulk-edit/package.json
@@ -1,14 +1,14 @@
{
"name": "@theia/bulk-edit",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia - Bulk Edit Extension",
"dependencies": {
- "@theia/core": "1.27.0",
- "@theia/editor": "1.27.0",
- "@theia/filesystem": "1.27.0",
- "@theia/monaco": "1.27.0",
+ "@theia/core": "1.28.0",
+ "@theia/editor": "1.28.0",
+ "@theia/filesystem": "1.28.0",
+ "@theia/monaco": "1.28.0",
"@theia/monaco-editor-core": "1.67.2",
- "@theia/workspace": "1.27.0"
+ "@theia/workspace": "1.28.0"
},
"publishConfig": {
"access": "public"
@@ -43,7 +43,7 @@
"watch": "theiaext watch"
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0"
+ "@theia/ext-scripts": "1.28.0"
},
"nyc": {
"extends": "../../configs/nyc.json"
diff --git a/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-node-selection.ts b/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-node-selection.ts
index 9e139b644bcc6..179018ceacd42 100644
--- a/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-node-selection.ts
+++ b/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-node-selection.ts
@@ -22,8 +22,8 @@ export interface BulkEditNodeSelection {
bulkEdit: ResourceFileEdit | ResourceTextEdit;
}
export namespace BulkEditNodeSelection {
- export function is(arg: Object | undefined): arg is BulkEditNodeSelection {
- return typeof arg === 'object' && ('bulkEdit' in arg);
+ export function is(arg: unknown): arg is BulkEditNodeSelection {
+ return !!arg && typeof arg === 'object' && ('bulkEdit' in arg);
}
export class CommandHandler extends SelectionCommandHandler {
diff --git a/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-tree.ts b/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-tree.ts
index 26dcdeb516645..b224da25a69d0 100644
--- a/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-tree.ts
+++ b/packages/bulk-edit/src/browser/bulk-edit-tree/bulk-edit-tree.ts
@@ -108,7 +108,7 @@ export interface BulkEditInfoNode extends UriSelection, SelectableTreeNode, Expa
fileContents?: string;
}
export namespace BulkEditInfoNode {
- export function is(node: Object | undefined): node is BulkEditInfoNode {
+ export function is(node: unknown): node is BulkEditInfoNode {
return ExpandableTreeNode.is(node) && UriSelection.is(node) && 'fileContents' in node;
}
}
diff --git a/packages/callhierarchy/package.json b/packages/callhierarchy/package.json
index 35a81ad773596..183eedf56837a 100644
--- a/packages/callhierarchy/package.json
+++ b/packages/callhierarchy/package.json
@@ -1,10 +1,10 @@
{
"name": "@theia/callhierarchy",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia - Call Hierarchy Extension",
"dependencies": {
- "@theia/core": "1.27.0",
- "@theia/editor": "1.27.0",
+ "@theia/core": "1.28.0",
+ "@theia/editor": "1.28.0",
"ts-md5": "^1.2.2"
},
"publishConfig": {
@@ -40,7 +40,7 @@
"watch": "theiaext watch"
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0"
+ "@theia/ext-scripts": "1.28.0"
},
"nyc": {
"extends": "../../configs/nyc.json"
diff --git a/packages/console/package.json b/packages/console/package.json
index 8eef9ecbe45fa..f048515fe92fe 100644
--- a/packages/console/package.json
+++ b/packages/console/package.json
@@ -1,10 +1,10 @@
{
"name": "@theia/console",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia - Console Extension",
"dependencies": {
- "@theia/core": "1.27.0",
- "@theia/monaco": "1.27.0",
+ "@theia/core": "1.28.0",
+ "@theia/monaco": "1.28.0",
"@theia/monaco-editor-core": "1.67.2",
"anser": "^2.0.1"
},
@@ -41,7 +41,7 @@
"watch": "theiaext watch"
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0"
+ "@theia/ext-scripts": "1.28.0"
},
"nyc": {
"extends": "../../configs/nyc.json"
diff --git a/packages/core/README.md b/packages/core/README.md
index 8f9282a7d1e47..d9226e45e4c76 100644
--- a/packages/core/README.md
+++ b/packages/core/README.md
@@ -86,16 +86,17 @@ export class SomeClass {
- `@phosphor/signaling` (from [`@phosphor/signaling@1`](https://www.npmjs.com/package/@phosphor/signaling))
- `@phosphor/virtualdom` (from [`@phosphor/virtualdom@1`](https://www.npmjs.com/package/@phosphor/virtualdom))
- `@phosphor/widgets` (from [`@phosphor/widgets@1`](https://www.npmjs.com/package/@phosphor/widgets))
- - `@theia/application-package` (from [`@theia/application-package@1.27.0`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0))
- - `@theia/application-package/lib/api` (from [`@theia/application-package@1.27.0`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0))
- - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.27.0`](https://www.npmjs.com/package/@theia/application-package/v/1.27.0))
- - `@theia/request` (from [`@theia/request@1.27.0`](https://www.npmjs.com/package/@theia/request/v/1.27.0))
- - `@theia/request/lib/proxy` (from [`@theia/request@1.27.0`](https://www.npmjs.com/package/@theia/request/v/1.27.0))
- - `@theia/request/lib/node-request-service` (from [`@theia/request@1.27.0`](https://www.npmjs.com/package/@theia/request/v/1.27.0))
+ - `@theia/application-package` (from [`@theia/application-package@1.28.0`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0))
+ - `@theia/application-package/lib/api` (from [`@theia/application-package@1.28.0`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0))
+ - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.28.0`](https://www.npmjs.com/package/@theia/application-package/v/1.28.0))
+ - `@theia/request` (from [`@theia/request@1.28.0`](https://www.npmjs.com/package/@theia/request/v/1.28.0))
+ - `@theia/request/lib/proxy` (from [`@theia/request@1.28.0`](https://www.npmjs.com/package/@theia/request/v/1.28.0))
+ - `@theia/request/lib/node-request-service` (from [`@theia/request@1.28.0`](https://www.npmjs.com/package/@theia/request/v/1.28.0))
- `fs-extra` (from [`fs-extra@^4.0.2`](https://www.npmjs.com/package/fs-extra))
- `fuzzy` (from [`fuzzy@^0.1.3`](https://www.npmjs.com/package/fuzzy))
- `inversify` (from [`inversify@^5.1.1`](https://www.npmjs.com/package/inversify))
- - `react-dom` (from [`react-dom@^16.8.0`](https://www.npmjs.com/package/react-dom))
+ - `react-dom` (from [`react-dom@^18.2.0`](https://www.npmjs.com/package/react-dom))
+ - `react-dom/client` (from [`react-dom@^18.2.0`](https://www.npmjs.com/package/react-dom))
- `react-virtualized` (from [`react-virtualized@^9.20.0`](https://www.npmjs.com/package/react-virtualized))
- `vscode-languageserver-protocol` (from [`vscode-languageserver-protocol@~3.15.3`](https://www.npmjs.com/package/vscode-languageserver-protocol))
- `vscode-uri` (from [`vscode-uri@^2.1.1`](https://www.npmjs.com/package/vscode-uri))
@@ -105,7 +106,7 @@ export class SomeClass {
- `lodash.throttle` (from [`lodash.throttle@^4.1.1`](https://www.npmjs.com/package/lodash.throttle))
- `nsfw` (from [`nsfw@^2.1.2`](https://www.npmjs.com/package/nsfw))
- `markdown-it` (from [`markdown-it@^12.3.2`](https://www.npmjs.com/package/markdown-it))
- - `react` (from [`react@^16.8.0`](https://www.npmjs.com/package/react))
+ - `react` (from [`react@^18.2.0`](https://www.npmjs.com/package/react))
- `ws` (from [`ws@^7.1.2`](https://www.npmjs.com/package/ws))
- `yargs` (from [`yargs@^15.3.1`](https://www.npmjs.com/package/yargs))
diff --git a/packages/core/i18n/nls.cs.json b/packages/core/i18n/nls.cs.json
index 3a92710d5b06a..5515cd0c8ae66 100644
--- a/packages/core/i18n/nls.cs.json
+++ b/packages/core/i18n/nls.cs.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Pohled na demontáž",
"theia": {
"callhierarchy": {
"noCallers": "Nebyl zjištěn žádný volající.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Vyberte kořenový pracovní prostor, do kterého chcete přidat konfiguraci",
"continueAll": "Pokračovat ve všem",
"copyExpressionValue": "Kopírování hodnoty výrazu",
+ "disassembly-view": {
+ "show-source-code": "Zobrazení zdrojového kódu v zobrazení disassembleru."
+ },
+ "instruction-breakpoint": "Bod přerušení instrukcí",
+ "instructionAddress": "Adresa",
+ "instructionBytes": "Byty",
+ "instructionNotAvailable": "Demontáž není k dispozici.",
+ "instructionText": "Pokyny",
"missingConfiguration": "Dynamická konfigurace '{0}:{1}' chybí nebo není použitelná",
+ "open-disassembly-view": "Otevřený pohled na demontáž",
"pauseAll": "Pozastavit vše",
"reveal": "Odhalení",
"threads": "Vlákna",
"toggleTracing": "Povolení/zakázání sledování komunikace s ladicími adaptéry"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "pokyny"
+ },
"editor": {
"diffEditor.maxFileSize": "Maximální velikost souboru v MB, pro kterou se vypočítávají rozdíly. Použijte hodnotu 0 pro žádný limit.",
"editor.accessibilityPageSize": "Řídí počet řádků v editoru, které může čtečka obrazovky přečíst najednou. Při detekci čtečky obrazovky automaticky nastavíme výchozí hodnotu na 500. Upozornění: Pro čísla větší než výchozí to má vliv na výkon.",
"editor.autoClosingDelete": "Řídí, zda má editor při mazání odstranit sousední uzavírací uvozovky nebo závorky.",
"editor.autoClosingDelete1": "Odstraňte sousední uzavírací uvozovky nebo závorky pouze v případě, že byly vloženy automaticky.",
"editor.bracketPairColorization.enabled": "Ovládá, zda je obarvení dvojice závorek povoleno, nebo ne. Pro přepsání barev zvýraznění závorek použijte 'workbench.colorCustomizations'.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Řídí, zda má každý typ závorky svůj vlastní nezávislý fond barev.",
"editor.codeLensFontSize": "Ovládá velikost písma v pixelech pro CodeLens. Při nastavení na `0` se použije 90 % hodnoty `#editor.fontSize#`.",
"editor.find.autoFindInSelection0": "Nikdy automaticky nezapínat funkci Najít ve výběru (výchozí nastavení).",
"editor.find.autoFindInSelection1": "Vždy automaticky zapněte funkci Najít ve výběru.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Povolí vodorovná vodítka pouze pro aktivní pár držáků.",
"editor.guides.bracketPairsHorizontal2": "Zakáže vodítka vodorovných dvojic konzol.",
"editor.guides.highlightActiveBracketPair": "Řídí, zda má editor zvýraznit aktivní dvojici závorek.",
+ "editor.guides.highlightActiveIndentation0": "Zvýrazní aktivního průvodce odsazením.",
+ "editor.guides.highlightActiveIndentation1": "Zvýrazní aktivní vodítko odsazení, i když jsou zvýrazněna vodítka závorek.",
+ "editor.guides.highlightActiveIndentation2": "Nezvýrazňujte aktivního průvodce odsazením.",
"editor.hover.above": "Pokud je místo, raději se zobrazí nad řádkem.",
"editor.inlayHints.enabled": "Povolí v editoru nápovědy pro vložení.",
+ "editor.inlayHints.enabled0": "Nápovědy pro vložení jsou povoleny",
+ "editor.inlayHints.enabled1": "Vložené nápovědy se zobrazují ve výchozím nastavení a skrývají se při podržení `Ctrl+Alt`",
+ "editor.inlayHints.enabled2": "Vložené nápovědy jsou ve výchozím nastavení skryté a zobrazí se při podržení `Ctrl+Alt`.",
+ "editor.inlayHints.enabled3": "Nápovědy pro vložení jsou zakázány",
"editor.inlayHints.fontFamily": "Řídí rodinu písma vložených nápověd v editoru. Je-li nastaveno na prázdnou hodnotu, použije se `#editor.fontFamily#`.",
"editor.inlayHints.fontSize": "Ovládá velikost písma vložených nápověd v editoru. Pokud je nakonfigurovaná hodnota menší než `5` nebo větší než velikost písma editoru, použije se výchozí hodnota 90 % z `#editor.fontSize#`.",
"editor.inlineSuggest.enabled": "Ovládá, zda se mají v editoru automaticky zobrazovat návrhy na řádkování.",
"editor.language.colorizedBracketPairs": "Definuje dvojice závorek, které jsou obarveny podle úrovně vnoření, pokud je obarvení dvojic závorek povoleno.",
"editor.lineHeight": "Ovládá výšku čáry.\n - Chcete-li automaticky vypočítat výšku řádku z velikosti písma, použijte hodnotu 0.\n - Hodnoty mezi 0 a 8 se použijí jako násobitel s velikostí písma.\n - Hodnoty větší nebo rovné 8 budou použity jako efektivní hodnoty.",
+ "editor.quickSuggestions0": "Rychlé návrhy se zobrazují uvnitř widgetu pro navrhování",
+ "editor.quickSuggestions1": "Rychlé návrhy se zobrazují jako text duchů",
+ "editor.quickSuggestions2": "Rychlé návrhy jsou zakázány",
"editor.renderLineHighlightOnlyWhenFocus": "Řídí, zda má editor vykreslovat zvýraznění aktuálního řádku pouze tehdy, když je editor zaměřen.",
"editor.renderWhitespace3": "Vykresluje pouze koncové bílé znaky.",
"editor.scrollbar.horizontal": "Ovládá viditelnost vodorovného posuvníku.",
@@ -170,6 +194,7 @@
"newPlugin": "Vytvoření nového pluginu"
},
"git": {
+ "aFewSecondsAgo": "před několika sekundami",
"addSignedOff": "Přidat Signed-off-by",
"amendReuseMessag": "Chcete-li znovu použít poslední zprávu o revizi, stiskněte klávesu \"Enter\" nebo klávesu \"Escape\" pro zrušení.",
"amendRewrite": "Přepsání předchozí zprávy o revizi. Stisknutím klávesy 'Enter' potvrdíte nebo klávesou 'Escape' zrušíte.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "vazba kláves v současné době koliduje",
"requiredKeybindingValidation": "je vyžadována hodnota keybindingu",
"resetKeybindingConfirmation": "Opravdu chcete obnovit výchozí hodnotu této vazby kláves?",
- "resetKeybindingTitle": "Obnovení vazby kláves pro {0}"
+ "resetKeybindingTitle": "Obnovení vazby kláves pro {0}",
+ "resetMultipleKeybindingsWarning": "Pokud pro tento příkaz existuje více klávesových vazeb, budou resetovány všechny."
},
"localize": {
"offlineTooltip": "Nelze se připojit k backendu."
@@ -354,10 +380,14 @@
"typeHierarchy": "Hierarchie typů"
},
"vsx-registry": {
- "openVSX": "Otevření registru VSX",
+ "errorFetching": "Chyba při načítání rozšíření.",
"recommendedExtensions": "Seznam názvů rozšíření doporučených pro použití v tomto pracovním prostoru.",
"searchPlaceholder": "Hledat rozšíření v {0}",
- "showRecommendedExtensions": "Řídí, zda se mají zobrazovat oznámení pro doporučení rozšíření."
+ "showRecommendedExtensions": "Řídí, zda se mají zobrazovat oznámení pro doporučení rozšíření.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Chyba při odstraňování rozšíření: {0}.",
+ "update-version-version-error": "Nepodařilo se nainstalovat verzi {0} {1} ."
+ }
},
"webview": {
"goToReadme": "Přejít na README",
diff --git a/packages/core/i18n/nls.de.json b/packages/core/i18n/nls.de.json
index 9eef589456049..fb181a394145b 100644
--- a/packages/core/i18n/nls.de.json
+++ b/packages/core/i18n/nls.de.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Demontage Ansicht",
"theia": {
"callhierarchy": {
"noCallers": "Es wurden keine Anrufer entdeckt.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Wählen Sie das Stammverzeichnis des Arbeitsbereichs, dem Sie die Konfiguration hinzufügen möchten",
"continueAll": "Alle fortsetzen",
"copyExpressionValue": "Ausdruckswert kopieren",
+ "disassembly-view": {
+ "show-source-code": "Quellcode in der Disassemblierungsansicht anzeigen."
+ },
+ "instruction-breakpoint": "Anweisung Haltepunkt",
+ "instructionAddress": "Adresse",
+ "instructionBytes": "Bytes",
+ "instructionNotAvailable": "Demontage nicht möglich.",
+ "instructionText": "Anleitung",
"missingConfiguration": "Die dynamische Konfiguration '{0}:{1}' fehlt oder ist nicht anwendbar",
+ "open-disassembly-view": "Demontageansicht öffnen",
"pauseAll": "Pause Alle",
"reveal": "Enthüllen",
"threads": "Threads",
"toggleTracing": "Aktivieren/Deaktivieren der Verfolgung der Kommunikation mit Debug-Adaptern"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "Anweisungen"
+ },
"editor": {
"diffEditor.maxFileSize": "Maximale Dateigröße in MB, für die Diffs berechnet werden sollen. Verwenden Sie 0 für keine Begrenzung.",
"editor.accessibilityPageSize": "Steuert die Anzahl der Zeilen im Editor, die von einem Screenreader auf einmal vorgelesen werden können. Wenn wir einen Screenreader erkennen, setzen wir automatisch den Standardwert auf 500. Achtung: Dies hat Auswirkungen auf die Leistung, wenn die Zahl größer als der Standardwert ist.",
"editor.autoClosingDelete": "Steuert, ob der Editor beim Löschen angrenzende schließende Anführungszeichen oder Klammern entfernen soll.",
"editor.autoClosingDelete1": "Entfernen Sie angrenzende schließende Anführungszeichen oder Klammern nur, wenn sie automatisch eingefügt wurden.",
"editor.bracketPairColorization.enabled": "Steuert, ob die Einfärbung von Klammerpaaren aktiviert ist oder nicht. Verwenden Sie 'workbench.colorCustomizations', um die Farben der Klammerhervorhebung zu überschreiben.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Steuert, ob jeder Klammertyp seinen eigenen unabhängigen Farbpool hat.",
"editor.codeLensFontSize": "Steuert die Schriftgröße in Pixeln für CodeLens. Bei Einstellung `0` werden 90% von `#editor.fontSize#` verwendet.",
"editor.find.autoFindInSelection0": "Niemals die automatische Suche in der Auswahl aktivieren (Standard).",
"editor.find.autoFindInSelection1": "Schalten Sie \"In Auswahl suchen\" immer automatisch ein.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Aktiviert horizontale Hilfslinien nur für das aktive Halterungspaar.",
"editor.guides.bracketPairsHorizontal2": "Deaktiviert die horizontalen Klammerpaarführungen.",
"editor.guides.highlightActiveBracketPair": "Steuert, ob der Editor das aktive Klammerpaar hervorheben soll.",
+ "editor.guides.highlightActiveIndentation0": "Hebt die aktive Einzugshilfe hervor.",
+ "editor.guides.highlightActiveIndentation1": "Hebt die aktive Einzugshilfe hervor, auch wenn Klammerhilfen hervorgehoben sind.",
+ "editor.guides.highlightActiveIndentation2": "Markieren Sie nicht die aktive Einzugsschablone.",
"editor.hover.above": "Bevorzugen Sie es, über der Linie zu schweben, wenn Platz vorhanden ist.",
"editor.inlayHints.enabled": "Aktiviert die Inlay-Hinweise im Editor.",
+ "editor.inlayHints.enabled0": "Inlay-Hinweise sind aktiviert",
+ "editor.inlayHints.enabled1": "Inlay-Hinweise werden standardmäßig angezeigt und bei gedrückter Tastenkombination \"Strg+Alt\" ausgeblendet",
+ "editor.inlayHints.enabled2": "Inlay-Hinweise sind standardmäßig ausgeblendet und werden angezeigt, wenn die Tastenkombination \"Strg+Alt\" gedrückt wird.",
+ "editor.inlayHints.enabled3": "Inlay-Hinweise sind deaktiviert",
"editor.inlayHints.fontFamily": "Steuert die Schriftfamilie der Inlay-Hinweise im Editor. Wenn leer, wird die `#editor.fontFamily#` verwendet.",
"editor.inlayHints.fontSize": "Steuert die Schriftgröße von Inlay-Hinweisen im Editor. Eine Vorgabe von 90% von `#editor.fontSize#` wird verwendet, wenn der konfigurierte Wert kleiner als `5` oder größer als die Schriftgröße des Editors ist.",
"editor.inlineSuggest.enabled": "Legt fest, ob automatisch Inline-Vorschläge im Editor angezeigt werden sollen.",
"editor.language.colorizedBracketPairs": "Definiert die Klammerpaare, die nach ihrer Verschachtelungsebene eingefärbt werden, wenn die Einfärbung von Klammerpaaren aktiviert ist.",
"editor.lineHeight": "Steuert die Zeilenhöhe.\n - Verwenden Sie 0, um die Zeilenhöhe automatisch anhand der Schriftgröße zu berechnen.\n - Werte zwischen 0 und 8 werden als Multiplikator mit der Schriftgröße verwendet.\n - Werte, die größer oder gleich 8 sind, werden als effektive Werte verwendet.",
+ "editor.quickSuggestions0": "Schnellvorschläge werden innerhalb des Vorschlags-Widgets angezeigt",
+ "editor.quickSuggestions1": "Schnellvorschläge werden als Geistertext angezeigt",
+ "editor.quickSuggestions2": "Schnellvorschläge sind deaktiviert",
"editor.renderLineHighlightOnlyWhenFocus": "Steuert, ob der Editor die aktuelle Zeile nur dann hervorheben soll, wenn der Editor fokussiert ist.",
"editor.renderWhitespace3": "Nur nachgestellte Leerzeichen werden wiedergegeben.",
"editor.scrollbar.horizontal": "Steuert die Sichtbarkeit der horizontalen Bildlaufleiste.",
@@ -170,6 +194,7 @@
"newPlugin": "Ein neues Plugin erstellen"
},
"git": {
+ "aFewSecondsAgo": "vor ein paar Sekunden",
"addSignedOff": "Abgezeichnet von hinzufügen",
"amendReuseMessag": "Um die letzte Meldung wieder zu verwenden, drücken Sie \"Enter\" oder \"Escape\", um den Vorgang abzubrechen.",
"amendRewrite": "Vorherige Übermittlungsnachricht neu schreiben. Bestätigen Sie mit \"Enter\" oder brechen Sie mit \"Escape\" ab.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "Tastenkombinationen kollidieren",
"requiredKeybindingValidation": "Schlüsselbindung Wert ist erforderlich",
"resetKeybindingConfirmation": "Möchten Sie diese Tastaturbelegung wirklich auf den Standardwert zurücksetzen?",
- "resetKeybindingTitle": "Tastaturbelegung für {0} zurücksetzen"
+ "resetKeybindingTitle": "Tastaturbelegung für {0} zurücksetzen",
+ "resetMultipleKeybindingsWarning": "Wenn mehrere Tastenkombinationen für diesen Befehl existieren, werden alle zurückgesetzt."
},
"localize": {
"offlineTooltip": "Kann keine Verbindung zum Backend herstellen."
@@ -354,10 +380,14 @@
"typeHierarchy": "Typenhierarchie"
},
"vsx-registry": {
- "openVSX": "Open VSX Registry",
+ "errorFetching": "Fehler beim Abrufen von Erweiterungen.",
"recommendedExtensions": "Eine Liste mit den Namen der Erweiterungen, die für die Verwendung in diesem Arbeitsbereich empfohlen werden.",
"searchPlaceholder": "Erweiterungen suchen in {0}",
- "showRecommendedExtensions": "Steuert, ob Benachrichtigungen für Erweiterungsempfehlungen angezeigt werden."
+ "showRecommendedExtensions": "Steuert, ob Benachrichtigungen für Erweiterungsempfehlungen angezeigt werden.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Fehler beim Entfernen der Erweiterung: {0}.",
+ "update-version-version-error": "Die Installation der Version {0} von {1} ist fehlgeschlagen."
+ }
},
"webview": {
"goToReadme": "Zum README gehen",
diff --git a/packages/core/i18n/nls.es.json b/packages/core/i18n/nls.es.json
index cfc67ef26a7bb..2e492812de1c3 100644
--- a/packages/core/i18n/nls.es.json
+++ b/packages/core/i18n/nls.es.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Vista de desmontaje",
"theia": {
"callhierarchy": {
"noCallers": "No se ha detectado ninguna llamada.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Seleccione la raíz del espacio de trabajo para añadir la configuración",
"continueAll": "Continuar todo",
"copyExpressionValue": "Copiar el valor de la expresión",
+ "disassembly-view": {
+ "show-source-code": "Mostrar el código fuente en la vista de desensamblaje."
+ },
+ "instruction-breakpoint": "Punto de interrupción de la instrucción",
+ "instructionAddress": "Dirección",
+ "instructionBytes": "Bytes",
+ "instructionNotAvailable": "Desmontaje no disponible.",
+ "instructionText": "Instrucción",
"missingConfiguration": "La configuración dinámica '{0}:{1}' falta o no es aplicable",
+ "open-disassembly-view": "Vista de desmontaje abierta",
"pauseAll": "Pausa Todo",
"reveal": "Revelar",
"threads": "Hilos",
"toggleTracing": "Activar/desactivar las comunicaciones de rastreo con los adaptadores de depuración"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "instrucciones"
+ },
"editor": {
"diffEditor.maxFileSize": "Tamaño máximo del archivo en MB para el que se calculan los diffs. Utilice 0 para no tener límite.",
"editor.accessibilityPageSize": "Controla el número de líneas del editor que pueden ser leídas por un lector de pantalla a la vez. Cuando detectamos un lector de pantalla, fijamos automáticamente el valor por defecto en 500. Advertencia: esto tiene una implicación de rendimiento para números mayores que el predeterminado.",
"editor.autoClosingDelete": "Controla si el editor debe eliminar las comillas de cierre adyacentes o los corchetes al borrar.",
"editor.autoClosingDelete1": "Elimine las comillas de cierre adyacentes o los corchetes sólo si se insertaron automáticamente.",
"editor.bracketPairColorization.enabled": "Controla si la coloración del par de corchetes está activada o no. Utilice 'workbench.colorCustomizations' para anular los colores de resaltado de los corchetes.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Controla si cada tipo de soporte tiene su propia reserva de color independiente.",
"editor.codeLensFontSize": "Controla el tamaño de la fuente en píxeles para CodeLens. Cuando se establece en `0`, se utiliza el 90% de `#editor.fontSize#`.",
"editor.find.autoFindInSelection0": "No activar nunca la función Buscar en la selección automáticamente (por defecto).",
"editor.find.autoFindInSelection1": "Activar siempre automáticamente la función Buscar en la selección.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Activa las guías horizontales sólo para el par de soportes activo.",
"editor.guides.bracketPairsHorizontal2": "Desactiva las guías de pares de soportes horizontales.",
"editor.guides.highlightActiveBracketPair": "Controla si el editor debe resaltar el par de corchetes activo.",
+ "editor.guides.highlightActiveIndentation0": "Resalta la guía de sangría activa.",
+ "editor.guides.highlightActiveIndentation1": "Resalta la guía de sangría activa incluso si las guías de corchetes están resaltadas.",
+ "editor.guides.highlightActiveIndentation2": "No resalte la guía de sangría activa.",
"editor.hover.above": "Prefiere mostrar por encima de la línea, si hay espacio.",
"editor.inlayHints.enabled": "Activa las sugerencias de incrustación en el editor.",
+ "editor.inlayHints.enabled0": "Se activan las sugerencias de incrustación",
+ "editor.inlayHints.enabled1": "Los consejos de incrustación se muestran por defecto y se ocultan cuando se mantiene `Ctrl+Alt`.",
+ "editor.inlayHints.enabled2": "Los consejos de incrustación están ocultos por defecto y se muestran cuando se mantiene pulsado `Ctrl+Alt`.",
+ "editor.inlayHints.enabled3": "Las sugerencias de incrustación están desactivadas",
"editor.inlayHints.fontFamily": "Controla la familia de fuentes de las sugerencias de incrustación en el editor. Cuando se establece en vacío, se utiliza `#editor.fontFamily#`.",
"editor.inlayHints.fontSize": "Controla el tamaño de la fuente de las sugerencias de incrustación en el editor. Se utiliza un valor por defecto del 90% de `#editor.fontSize#` cuando el valor configurado es menor que `5` o mayor que el tamaño de la fuente del editor.",
"editor.inlineSuggest.enabled": "Controla si se muestran automáticamente las sugerencias en línea en el editor.",
"editor.language.colorizedBracketPairs": "Define los pares de corchetes que se colorean por su nivel de anidamiento si la coloración de pares de corchetes está activada.",
"editor.lineHeight": "Controla la altura de la línea.\n - Utilice 0 para calcular automáticamente la altura de la línea a partir del tamaño de la fuente.\n - Los valores entre 0 y 8 se utilizarán como un multiplicador con el tamaño de la fuente.\n - Los valores mayores o iguales a 8 se utilizarán como valores efectivos.",
+ "editor.quickSuggestions0": "Las sugerencias rápidas se muestran dentro del widget de sugerencias",
+ "editor.quickSuggestions1": "Las sugerencias rápidas se muestran como texto fantasma",
+ "editor.quickSuggestions2": "Las sugerencias rápidas están desactivadas",
"editor.renderLineHighlightOnlyWhenFocus": "Controla si el editor debe mostrar el resaltado de la línea actual sólo cuando el editor está enfocado.",
"editor.renderWhitespace3": "Renderiza sólo los caracteres de los espacios en blanco finales.",
"editor.scrollbar.horizontal": "Controla la visibilidad de la barra de desplazamiento horizontal.",
@@ -170,6 +194,7 @@
"newPlugin": "Creación de un nuevo plugin"
},
"git": {
+ "aFewSecondsAgo": "hace unos segundos",
"addSignedOff": "Agregar a la lista de firmas",
"amendReuseMessag": "Para reutilizar el último mensaje de confirmación, pulse \"Enter\" o \"Escape\" para cancelar.",
"amendRewrite": "Reescribir el mensaje de confirmación anterior. Pulse 'Enter' para confirmar o 'Escape' para cancelar.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "la vinculación de teclas actualmente colisiona",
"requiredKeybindingValidation": "se requiere el valor del keybinding",
"resetKeybindingConfirmation": "¿Realmente quieres restablecer este keybinding a su valor por defecto?",
- "resetKeybindingTitle": "Restablecer la unión de teclas para {0}"
+ "resetKeybindingTitle": "Restablecer la unión de teclas para {0}",
+ "resetMultipleKeybindingsWarning": "Si existen varias combinaciones de teclas para este comando, todas ellas se restablecerán."
},
"localize": {
"offlineTooltip": "No se puede conectar al backend."
@@ -354,10 +380,14 @@
"typeHierarchy": "Jerarquía de tipos"
},
"vsx-registry": {
- "openVSX": "Abrir el registro de VSX",
+ "errorFetching": "Error en la búsqueda de extensiones.",
"recommendedExtensions": "Una lista de los nombres de las extensiones recomendadas para su uso en este espacio de trabajo.",
"searchPlaceholder": "Buscar extensiones en {0}",
- "showRecommendedExtensions": "Controla si se muestran las notificaciones de las recomendaciones de extensión."
+ "showRecommendedExtensions": "Controla si se muestran las notificaciones de las recomendaciones de extensión.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Error al eliminar la extensión: {0}.",
+ "update-version-version-error": "Fallo al instalar la versión {0} de {1}."
+ }
},
"webview": {
"goToReadme": "Ir al LÉAME",
diff --git a/packages/core/i18n/nls.fr.json b/packages/core/i18n/nls.fr.json
index a055dc7cacce8..1671ab6254ccd 100644
--- a/packages/core/i18n/nls.fr.json
+++ b/packages/core/i18n/nls.fr.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Vue du démontage",
"theia": {
"callhierarchy": {
"noCallers": "Aucun appelant n'a été détecté.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Sélectionnez la racine de l'espace de travail pour y ajouter la configuration",
"continueAll": "Continuer tout",
"copyExpressionValue": "Copier la valeur de l'expression",
+ "disassembly-view": {
+ "show-source-code": "Afficher le code source en vue du désassemblage."
+ },
+ "instruction-breakpoint": "Point d'arrêt de l'instruction",
+ "instructionAddress": "Adresse",
+ "instructionBytes": "Octets",
+ "instructionNotAvailable": "Démontage non disponible.",
+ "instructionText": "Instruction",
"missingConfiguration": "La configuration dynamique '{0}:{1}' est manquante ou non applicable.",
+ "open-disassembly-view": "Vue du démontage ouvert",
"pauseAll": "Pause tout",
"reveal": "Révéler",
"threads": "Les fils",
"toggleTracing": "Activer/désactiver le traçage des communications avec les adaptateurs de débogage"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "instructions"
+ },
"editor": {
"diffEditor.maxFileSize": "Taille maximale du fichier en Mo pour laquelle il faut calculer les différences. Utilisez 0 pour ne pas avoir de limite.",
"editor.accessibilityPageSize": "Contrôle le nombre de lignes de l'éditeur qui peuvent être lues en une seule fois par un lecteur d'écran. Lorsque nous détectons un lecteur d'écran, nous fixons automatiquement la valeur par défaut à 500. Attention : ceci a une implication sur la performance pour les nombres plus grands que la valeur par défaut.",
"editor.autoClosingDelete": "Contrôle si l'éditeur doit supprimer les guillemets fermants ou les parenthèses adjacentes lors de la suppression.",
"editor.autoClosingDelete1": "Supprimez les guillemets fermants ou les parenthèses adjacentes uniquement s'ils ont été insérés automatiquement.",
"editor.bracketPairColorization.enabled": "Contrôle si la colorisation des paires de crochets est activée ou non. Utilisez 'workbench.colorCustomizations' pour modifier les couleurs de surbrillance des crochets.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Contrôle si chaque type de support a son propre pool de couleurs indépendant.",
"editor.codeLensFontSize": "Contrôle la taille de la police en pixels pour CodeLens. Lorsqu'il a pour valeur `0`, 90% de `#editor.fontSize#` est utilisé.",
"editor.find.autoFindInSelection0": "Ne jamais activer la recherche automatique dans la sélection (par défaut).",
"editor.find.autoFindInSelection1": "Activez toujours la recherche automatique dans la sélection.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Active les guides horizontaux uniquement pour la paire de supports active.",
"editor.guides.bracketPairsHorizontal2": "Désactive les guides de paires de supports horizontaux.",
"editor.guides.highlightActiveBracketPair": "Contrôle si l'éditeur doit mettre en évidence la paire de crochets active.",
+ "editor.guides.highlightActiveIndentation0": "Met en évidence le guide d'indentation actif.",
+ "editor.guides.highlightActiveIndentation1": "Met en évidence le guide d'indentation actif, même si les guides de support sont mis en évidence.",
+ "editor.guides.highlightActiveIndentation2": "Ne mettez pas en surbrillance le guide d'indentation actif.",
"editor.hover.above": "Préférez l'affichage au-dessus de la ligne, s'il y a de la place.",
"editor.inlayHints.enabled": "Active les indices d'incrustation dans l'éditeur.",
+ "editor.inlayHints.enabled0": "Les indices d'incrustation sont activés",
+ "editor.inlayHints.enabled1": "Les conseils d'incrustation sont affichés par défaut et sont masqués lorsque vous maintenez les touches `Ctrl+Alt`.",
+ "editor.inlayHints.enabled2": "Les indices d'incrustation sont cachés par défaut et s'affichent en maintenant les touches `Ctrl+Alt`.",
+ "editor.inlayHints.enabled3": "Les indices d'incrustation sont désactivés",
"editor.inlayHints.fontFamily": "Contrôle la famille de polices des indices d'incrustation dans l'éditeur. Si la valeur est vide, la `#editor.fontFamily#` est utilisée.",
"editor.inlayHints.fontSize": "Contrôle la taille de la police des indices d'incrustation dans l'éditeur. Une valeur par défaut de 90% de `#editor.fontSize#` est utilisée lorsque la valeur configurée est inférieure à `5` ou supérieure à la taille de la police de l'éditeur.",
"editor.inlineSuggest.enabled": "Contrôle l'affichage automatique des suggestions en ligne dans l'éditeur.",
"editor.language.colorizedBracketPairs": "Définit les paires de crochets qui sont colorisées par leur niveau d'imbrication si la colorisation des paires de crochets est activée.",
"editor.lineHeight": "Contrôle la hauteur de la ligne.\n - Utilisez 0 pour calculer automatiquement la hauteur de ligne à partir de la taille de la police.\n - Les valeurs comprises entre 0 et 8 seront utilisées comme un multiplicateur avec la taille de la police.\n - Les valeurs supérieures ou égales à 8 seront utilisées comme valeurs effectives.",
+ "editor.quickSuggestions0": "Les suggestions rapides s'affichent dans le widget de suggestion",
+ "editor.quickSuggestions1": "Les suggestions rapides s'affichent sous forme de texte fantôme",
+ "editor.quickSuggestions2": "Les suggestions rapides sont désactivées",
"editor.renderLineHighlightOnlyWhenFocus": "Contrôle si l'éditeur doit rendre la surbrillance de la ligne actuelle uniquement lorsque l'éditeur est focalisé.",
"editor.renderWhitespace3": "Rendre uniquement les caractères d'espacement arrière.",
"editor.scrollbar.horizontal": "Contrôle la visibilité de la barre de défilement horizontale.",
@@ -170,6 +194,7 @@
"newPlugin": "Créer un nouveau plugin"
},
"git": {
+ "aFewSecondsAgo": "il y a quelques secondes",
"addSignedOff": "Ajouter Signé-par",
"amendReuseMessag": "Pour réutiliser le dernier message de validation, appuyez sur 'Enter' ou 'Escape' pour annuler.",
"amendRewrite": "Réécrire le message de livraison précédent. Appuyez sur 'Enter' pour confirmer ou 'Escape' pour annuler.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "Les combinaisons de touches sont actuellement en conflit",
"requiredKeybindingValidation": "la valeur du keybinding est requise",
"resetKeybindingConfirmation": "Voulez-vous vraiment réinitialiser ce raccourci clavier à sa valeur par défaut ?",
- "resetKeybindingTitle": "Réinitialiser le raccourci clavier pour {0}"
+ "resetKeybindingTitle": "Réinitialiser le raccourci clavier pour {0}",
+ "resetMultipleKeybindingsWarning": "Si plusieurs combinaisons de touches existent pour cette commande, elles seront toutes réinitialisées."
},
"localize": {
"offlineTooltip": "Impossible de se connecter au backend."
@@ -354,10 +380,14 @@
"typeHierarchy": "Hiérarchie des types"
},
"vsx-registry": {
- "openVSX": "Registre Open VSX",
+ "errorFetching": "Erreur de récupération des extensions.",
"recommendedExtensions": "Une liste des noms des extensions dont l'utilisation est recommandée dans cet espace de travail.",
"searchPlaceholder": "Rechercher les extensions dans {0}",
- "showRecommendedExtensions": "Contrôle si les notifications sont affichées pour les recommandations d'extension."
+ "showRecommendedExtensions": "Contrôle si les notifications sont affichées pour les recommandations d'extension.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Erreur lors de la suppression de l'extension : {0}.",
+ "update-version-version-error": "Échec de l'installation de la version {0} de {1}."
+ }
},
"webview": {
"goToReadme": "Aller au fichier README",
diff --git a/packages/core/i18n/nls.hu.json b/packages/core/i18n/nls.hu.json
index 9b1cb8e4ca18a..8094fcbf45e65 100644
--- a/packages/core/i18n/nls.hu.json
+++ b/packages/core/i18n/nls.hu.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Szétszerelési nézet",
"theia": {
"callhierarchy": {
"noCallers": "Nem észleltek hívókat.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Válassza ki a munkaterület gyökerét a konfiguráció hozzáadásához",
"continueAll": "Folytassa az összes",
"copyExpressionValue": "Kifejezés értékének másolása",
+ "disassembly-view": {
+ "show-source-code": "Forráskód megjelenítése szétszerelési nézetben."
+ },
+ "instruction-breakpoint": "Megszakítási pont",
+ "instructionAddress": "Cím:",
+ "instructionBytes": "Bájtok",
+ "instructionNotAvailable": "Szétszerelés nem lehetséges.",
+ "instructionText": "Utasítás",
"missingConfiguration": "A '{0}:{1}' dinamikus konfiguráció hiányzik vagy nem alkalmazható.",
+ "open-disassembly-view": "Nyitott szétszerelési nézet",
"pauseAll": "Minden szünet",
"reveal": "Kiderül",
"threads": "Szálak",
"toggleTracing": "A hibakeresési adapterekkel folytatott kommunikáció nyomon követésének engedélyezése/letiltása"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "utasítások"
+ },
"editor": {
"diffEditor.maxFileSize": "Maximális fájlméret MB-ban, amelyre diffs-t kell számítani. Használja a 0 értéket, ha nincs korlát.",
"editor.accessibilityPageSize": "A szerkesztő azon sorainak számát szabályozza, amelyeket a képernyőolvasó egyszerre fel tud olvasni. Amikor észlelünk egy képernyőolvasót, automatikusan 500-ra állítjuk az alapértelmezett értéket. Figyelmeztetés: ez az alapértelmezettnél nagyobb számok esetén teljesítménybeli következményekkel jár.",
"editor.autoClosingDelete": "Szabályozza, hogy a szerkesztő törléskor eltávolítsa-e a szomszédos záró idézőjeleket vagy zárójeleket.",
"editor.autoClosingDelete1": "Csak akkor távolítsa el a szomszédos záró idézőjeleket vagy zárójeleket, ha azok automatikusan be lettek illesztve.",
"editor.bracketPairColorization.enabled": "Szabályozza, hogy a zárójelpár színezése engedélyezve legyen-e vagy sem. A 'workbench.colorCustomizations' használatával felülbírálhatja a zárójelek kiemelési színeit.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Szabályozza, hogy minden zárójel-típusnak legyen-e saját, független színkészlete.",
"editor.codeLensFontSize": "A CodeLens betűméretét vezérli pixelben. Ha `0`-ra van állítva, akkor a `#editor.fontSize#` 90%-át használja.",
"editor.find.autoFindInSelection0": "Soha ne kapcsolja be automatikusan a Keresés a kiválasztásban funkciót (alapértelmezett).",
"editor.find.autoFindInSelection1": "Mindig automatikusan kapcsolja be a Keresés a kiválasztásban funkciót.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Csak az aktív konzolpár vízszintes vezetőit engedélyezi.",
"editor.guides.bracketPairsHorizontal2": "Letiltja a vízszintes konzolpár vezetőket.",
"editor.guides.highlightActiveBracketPair": "Szabályozza, hogy a szerkesztő kiemelje-e az aktív zárójelpárt.",
+ "editor.guides.highlightActiveIndentation0": "Kiemeli az aktív behúzási útmutatót.",
+ "editor.guides.highlightActiveIndentation1": "Kiemeli az aktív behúzási útmutatót, még akkor is, ha a zárójel-vezetők ki vannak jelölve.",
+ "editor.guides.highlightActiveIndentation2": "Ne emelje ki az aktív behúzási útmutatót.",
"editor.hover.above": "Előnyben részesíti a vonal fölött lebegő megjelenítést, ha van hely.",
"editor.inlayHints.enabled": "Engedélyezi az inlay tippeket a szerkesztőben.",
+ "editor.inlayHints.enabled0": "Az inlay tippek engedélyezve vannak",
+ "editor.inlayHints.enabled1": "Az inlay tippek alapértelmezés szerint megjelennek, és elrejtődnek, ha a \"Ctrl+Alt\" billentyűkombinációt nyomva tartjuk.",
+ "editor.inlayHints.enabled2": "Az inlay tippek alapértelmezés szerint el vannak rejtve, és a \"Ctrl+Alt\" billentyűkombináció lenyomásakor jelennek meg.",
+ "editor.inlayHints.enabled3": "Az inlay tippek le vannak tiltva",
"editor.inlayHints.fontFamily": "A szerkesztőben lévő betűtípus-családot szabályozza. Ha üres, akkor a `#editor.fontFamily#`-t használja.",
"editor.inlayHints.fontSize": "A betűméretet szabályozza a szerkesztőben megjelenő betűjelzések betűméretét. Az alapértelmezett érték a `#editor.fontSize#` 90%-a, ha a beállított érték kisebb, mint `5` vagy nagyobb, mint a szerkesztő betűmérete.",
"editor.inlineSuggest.enabled": "Szabályozza, hogy a szerkesztőben automatikusan megjelenjenek-e a soron belüli javaslatok.",
"editor.language.colorizedBracketPairs": "Meghatározza azokat a zárójelpárokat, amelyek színezése a beágyazási szintjük szerint történik, ha a zárójelpárok színezése engedélyezve van.",
"editor.lineHeight": "A vonal magasságát szabályozza.\n - A 0 értéket használva automatikusan kiszámítja a sortávolságot a betűméretből.\n - A 0 és 8 közötti értékek a betűmérettel való szorzóként kerülnek felhasználásra.\n - A 8-nál nagyobb vagy azzal egyenlő értékek tényleges értékként lesznek használva.",
+ "editor.quickSuggestions0": "Gyors javaslatok megjelenítése a suggest widgeten belül",
+ "editor.quickSuggestions1": "A gyors javaslatok szellemszövegként jelennek meg",
+ "editor.quickSuggestions2": "A gyors javaslatok letiltva",
"editor.renderLineHighlightOnlyWhenFocus": "Azt vezérli, hogy a szerkesztő csak akkor jelenítse meg az aktuális sor kiemelését, amikor a szerkesztő fókuszban van.",
"editor.renderWhitespace3": "Csak az utolsó szóköz karaktereket adja vissza.",
"editor.scrollbar.horizontal": "A vízszintes görgetősáv láthatóságát szabályozza.",
@@ -170,6 +194,7 @@
"newPlugin": "Egy új plugin építése"
},
"git": {
+ "aFewSecondsAgo": "néhány másodperccel ezelőtt",
"addSignedOff": "Signed-off-by hozzáadása",
"amendReuseMessag": "Az utolsó átadási üzenet újbóli használatához nyomja meg az 'Enter' billentyűt, vagy az 'Escape' billentyűt a törléshez.",
"amendRewrite": "Írja át az előző commit üzenetet. Nyomja meg az 'Enter' billentyűt a megerősítéshez vagy az 'Escape' billentyűt a törléshez.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "billentyűkötözés jelenleg ütközik",
"requiredKeybindingValidation": "billentyűkötés értéke szükséges",
"resetKeybindingConfirmation": "Tényleg vissza akarja állítani ezt a billentyűkötést az alapértelmezett értékre?",
- "resetKeybindingTitle": "A {0} billentyűkhöz való kötés visszaállítása"
+ "resetKeybindingTitle": "A {0} billentyűkhöz való kötés visszaállítása",
+ "resetMultipleKeybindingsWarning": "Ha a parancshoz több billentyűzetmegkötés is létezik, akkor mindet visszaállítja a rendszer."
},
"localize": {
"offlineTooltip": "Nem tud csatlakozni a háttértárhoz."
@@ -354,10 +380,14 @@
"typeHierarchy": "Típushierarchia"
},
"vsx-registry": {
- "openVSX": "VSX Registry megnyitása",
+ "errorFetching": "Hiba a kiterjesztések lekérdezésében.",
"recommendedExtensions": "A munkaterületre ajánlott kiterjesztések neveinek listája.",
"searchPlaceholder": "Keresés kiterjesztések {0}",
- "showRecommendedExtensions": "Szabályozza, hogy a kiterjesztési ajánlásokhoz megjelenjenek-e értesítések."
+ "showRecommendedExtensions": "Szabályozza, hogy a kiterjesztési ajánlásokhoz megjelenjenek-e értesítések.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Hiba a kiterjesztés eltávolításakor: {0}.",
+ "update-version-version-error": "Nem sikerült telepíteni a {1} {0} verzióját."
+ }
},
"webview": {
"goToReadme": "Tovább a README-hez",
diff --git a/packages/core/i18n/nls.it.json b/packages/core/i18n/nls.it.json
index fe1e037c2bc19..0a89bccdac8bf 100644
--- a/packages/core/i18n/nls.it.json
+++ b/packages/core/i18n/nls.it.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Vista di smontaggio",
"theia": {
"callhierarchy": {
"noCallers": "Non sono stati rilevati chiamanti.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Selezionare lo spazio di lavoro principale a cui aggiungere la configurazione",
"continueAll": "Continua tutto",
"copyExpressionValue": "Copiare il valore dell'espressione",
+ "disassembly-view": {
+ "show-source-code": "Mostra il codice sorgente nella vista di disassemblaggio."
+ },
+ "instruction-breakpoint": "Istruzione Punto di interruzione",
+ "instructionAddress": "Indirizzo",
+ "instructionBytes": "Byte",
+ "instructionNotAvailable": "Smontaggio non disponibile.",
+ "instructionText": "Istruzioni",
"missingConfiguration": "La configurazione dinamica '{0}:{1}' è mancante o non applicabile",
+ "open-disassembly-view": "Vista di smontaggio aperta",
"pauseAll": "Pausa Tutto",
"reveal": "Rivela",
"threads": "Threads",
"toggleTracing": "Abilita/disabilita il tracciamento delle comunicazioni con gli adattatori di debug"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "istruzioni"
+ },
"editor": {
"diffEditor.maxFileSize": "Dimensione massima del file in MB per cui calcolare le differenze. Usa 0 per nessun limite.",
"editor.accessibilityPageSize": "Controlla il numero di linee nell'editor che possono essere lette da uno screen reader in una volta sola. Quando rileviamo uno screen reader impostiamo automaticamente il valore predefinito a 500. Attenzione: questo ha un'implicazione sulle prestazioni per numeri più grandi di quello predefinito.",
"editor.autoClosingDelete": "Controlla se l'editor deve rimuovere le virgolette o le parentesi di chiusura adiacenti quando cancella.",
"editor.autoClosingDelete1": "Rimuovi le virgolette o le parentesi di chiusura adiacenti solo se sono state inserite automaticamente.",
"editor.bracketPairColorization.enabled": "Controlla se la colorazione delle coppie di parentesi è abilitata o meno. Usa 'workbench.colorCustomizations' per sovrascrivere i colori di evidenziazione delle parentesi.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Controlla se ogni tipo di staffa ha il suo pool di colori indipendente.",
"editor.codeLensFontSize": "Controlla la dimensione del carattere in pixel per CodeLens. Se impostato a `0`, viene usato il 90% di `#editor.fontSize#`.",
"editor.find.autoFindInSelection0": "Non attivare mai automaticamente Find in Selection (predefinito).",
"editor.find.autoFindInSelection1": "Attivare sempre automaticamente Find in Selection.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Abilita le guide orizzontali solo per la coppia di staffe attiva.",
"editor.guides.bracketPairsHorizontal2": "Disabilita le guide orizzontali della coppia di staffe.",
"editor.guides.highlightActiveBracketPair": "Controlla se l'editor deve evidenziare la coppia di parentesi attiva.",
+ "editor.guides.highlightActiveIndentation0": "Evidenzia la guida al rientro attiva.",
+ "editor.guides.highlightActiveIndentation1": "Evidenzia la guida di rientro attiva anche se sono evidenziate le guide di parentesi.",
+ "editor.guides.highlightActiveIndentation2": "Non evidenziare la guida di rientro attiva.",
"editor.hover.above": "Preferisce mostrare sopra la linea, se c'è spazio.",
"editor.inlayHints.enabled": "Abilita i suggerimenti per l'intarsio nell'editor.",
+ "editor.inlayHints.enabled0": "I suggerimenti per l'intarsio sono abilitati",
+ "editor.inlayHints.enabled1": "I suggerimenti per l'intarsio sono visualizzati per impostazione predefinita e si nascondono quando si tiene premuto `Ctrl+Alt`.",
+ "editor.inlayHints.enabled2": "I suggerimenti per l'intarsio sono nascosti per impostazione predefinita e vengono visualizzati quando si tiene premuto `Ctrl+Alt`.",
+ "editor.inlayHints.enabled3": "I suggerimenti per l'intarsio sono disabilitati",
"editor.inlayHints.fontFamily": "Controlla la famiglia di caratteri dei suggerimenti inlay nell'editor. Se impostato a vuoto, viene usato il `#editor.fontFamily#`.",
"editor.inlayHints.fontSize": "Controlla la dimensione del carattere dei suggerimenti inlay nell'editor. Un valore predefinito del 90% di `#editor.fontSize#` è usato quando il valore configurato è inferiore a `5` o superiore alla dimensione del carattere dell'editor.",
"editor.inlineSuggest.enabled": "Controlla se mostrare automaticamente i suggerimenti in linea nell'editor.",
"editor.language.colorizedBracketPairs": "Definisce le coppie di parentesi che sono colorate dal loro livello di annidamento se la colorazione delle coppie di parentesi è abilitata.",
"editor.lineHeight": "Controlla l'altezza della linea.\n - Usa 0 per calcolare automaticamente l'altezza della linea dalla dimensione del carattere.\n - I valori tra 0 e 8 saranno usati come moltiplicatore con la dimensione del carattere.\n - I valori maggiori o uguali a 8 saranno usati come valori effettivi.",
+ "editor.quickSuggestions0": "I suggerimenti rapidi vengono visualizzati all'interno del widget Suggerimenti",
+ "editor.quickSuggestions1": "I suggerimenti rapidi vengono visualizzati come testo fantasma",
+ "editor.quickSuggestions2": "I suggerimenti rapidi sono disabilitati",
"editor.renderLineHighlightOnlyWhenFocus": "Controlla se l'editor deve rendere l'evidenziazione della linea corrente solo quando l'editor è focalizzato.",
"editor.renderWhitespace3": "Rende solo i caratteri di spazi bianchi finali.",
"editor.scrollbar.horizontal": "Controlla la visibilità della barra di scorrimento orizzontale.",
@@ -170,6 +194,7 @@
"newPlugin": "Costruire un nuovo plugin"
},
"git": {
+ "aFewSecondsAgo": "pochi secondi fa",
"addSignedOff": "Aggiungi Firmato-da",
"amendReuseMessag": "Per riutilizzare l'ultimo messaggio di commit, premi 'Enter' o 'Escape' per annullare.",
"amendRewrite": "Riscrivere il messaggio di commit precedente. Premi 'Enter' per confermare o 'Escape' per annullare.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "il keybinding attualmente collima",
"requiredKeybindingValidation": "Il valore del keybinding è necessario",
"resetKeybindingConfirmation": "Si vuole davvero ripristinare il valore predefinito di questo keybinding?",
- "resetKeybindingTitle": "Azzeramento del keybinding per {0}"
+ "resetKeybindingTitle": "Azzeramento del keybinding per {0}",
+ "resetMultipleKeybindingsWarning": "Se per questo comando esistono più collegamenti ai tasti, tutti verranno azzerati."
},
"localize": {
"offlineTooltip": "Impossibile connettersi al backend."
@@ -354,10 +380,14 @@
"typeHierarchy": "Gerarchia dei tipi"
},
"vsx-registry": {
- "openVSX": "Aprire il registro VSX",
+ "errorFetching": "Errore nel recupero delle estensioni.",
"recommendedExtensions": "Una lista dei nomi delle estensioni raccomandate per l'uso in questo spazio di lavoro.",
"searchPlaceholder": "Estensioni di ricerca in {0}",
- "showRecommendedExtensions": "Controlla se le notifiche sono mostrate per le raccomandazioni di estensione."
+ "showRecommendedExtensions": "Controlla se le notifiche sono mostrate per le raccomandazioni di estensione.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Errore durante la rimozione dell'estensione: {0}.",
+ "update-version-version-error": "Impossibile installare la versione {0} di {1}."
+ }
},
"webview": {
"goToReadme": "Vai a README",
diff --git a/packages/core/i18n/nls.ja.json b/packages/core/i18n/nls.ja.json
index d9d08ca00cdb8..a4a8fc9909021 100644
--- a/packages/core/i18n/nls.ja.json
+++ b/packages/core/i18n/nls.ja.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "分解図",
"theia": {
"callhierarchy": {
"noCallers": "発信者は検出されていません。",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "設定を追加するワークスペース・ルートを選択します。",
"continueAll": "すべてを続ける",
"copyExpressionValue": "コピー式の値",
+ "disassembly-view": {
+ "show-source-code": "逆アセンブルビューでソースコードを表示する"
+ },
+ "instruction-breakpoint": "命令ブレークポイント",
+ "instructionAddress": "住所",
+ "instructionBytes": "バイト",
+ "instructionNotAvailable": "分解はできません。",
+ "instructionText": "インストラクション",
"missingConfiguration": "ダイナミックコンフィギュレーション「{0}:{1}」が存在しないか、適用できない",
+ "open-disassembly-view": "オープン分解図",
"pauseAll": "ポーズ・オール",
"reveal": "暴露",
"threads": "スレッド",
"toggleTracing": "デバッグアダプタとの通信のトレースの有効化/無効化"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "指令"
+ },
"editor": {
"diffEditor.maxFileSize": "差分を計算するファイルの最大サイズをMBで指定します。制限しない場合は 0 を使用します。",
"editor.accessibilityPageSize": "スクリーン・リーダーが一度に読み上げられるエディターの行数を制御します。スクリーン・リーダーが検出されると、自動的にデフォルトが500に設定されます。警告: デフォルト値よりも大きな数値を設定した場合、パフォーマンスが低下します。",
"editor.autoClosingDelete": "削除の際に、隣接する閉じ引用符や括弧を削除するかどうかを制御します。",
"editor.autoClosingDelete1": "自動的に挿入された場合のみ、隣接する閉じ引用符または括弧を削除します。",
"editor.bracketPairColorization.enabled": "ブラケットペアの色付けを有効にするかどうかを制御します。ブラケットのハイライト色をオーバーライドするには 'workbench.colorCustomizations' を使用します。",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "各ブラケットタイプに独立したカラープールを持たせるかどうかを制御します。",
"editor.codeLensFontSize": "CodeLensのフォントサイズをピクセル単位で制御します。0`に設定すると、`#editor.fontSize#`の90%が使用されます。",
"editor.find.autoFindInSelection0": "選択部分の検索を自動的にオンにしない(デフォルト)。",
"editor.find.autoFindInSelection1": "常に「選択中の検索」を自動的にオンにします。",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "アクティブなブラケットペアにのみ水平方向のガイドを有効にします。",
"editor.guides.bracketPairsHorizontal2": "水平ブラケットペアガイドを無効にします。",
"editor.guides.highlightActiveBracketPair": "エディターがアクティブなブラケットペアをハイライト表示するかどうかを制御します。",
+ "editor.guides.highlightActiveIndentation0": "アクティブなインデントガイドをハイライト表示します。",
+ "editor.guides.highlightActiveIndentation1": "ブラケットガイドがハイライトされている場合でも、アクティブなインデントガイドをハイライトします。",
+ "editor.guides.highlightActiveIndentation2": "アクティブなインデントガイドをハイライト表示しない。",
"editor.hover.above": "スペースがある場合は、行の上にホバー表示することを優先します。",
"editor.inlayHints.enabled": "エディタでインレイのヒントを有効にします。",
+ "editor.inlayHints.enabled0": "インレイヒントが有効",
+ "editor.inlayHints.enabled1": "インレイのヒントはデフォルトで表示され、`Ctrl+Alt`を押すと隠れます。",
+ "editor.inlayHints.enabled2": "インレイのヒントはデフォルトでは非表示で、`Ctrl+Alt`を押したときに表示されます。",
+ "editor.inlayHints.enabled3": "インレイヒントが無効",
"editor.inlayHints.fontFamily": "エディタ内のインレイヒントのフォントファミリーを制御します。空白に設定すると、`#editor.fontFamily#`が使用されます。",
"editor.inlayHints.fontSize": "エディターでのインレイヒントのフォントサイズを制御します。設定値が `5` 未満またはエディタのフォントサイズより大きい場合、デフォルトの `#editor.fontSize#` の 90% が使用されます。",
"editor.inlineSuggest.enabled": "エディタにインラインのサジェストを自動的に表示するかどうかを制御します。",
"editor.language.colorizedBracketPairs": "ブラケットペアの色付けが有効な場合に、その入れ子レベルによって色付けされるブラケットペアを定義する。",
"editor.lineHeight": "行の高さを制御します。\n - 0を指定すると、フォントサイズから自動的に行の高さが計算されます。\n - 0から8までの値は、フォントサイズとの乗数として使用されます。\n - 8以上の値は、有効な値として使用されます。",
+ "editor.quickSuggestions0": "サジェストウィジェットの中にクイックサジェストを表示",
+ "editor.quickSuggestions1": "クイックサジェスト機能をゴーストテキストで表示",
+ "editor.quickSuggestions2": "クイックサジェスト機能を無効化",
"editor.renderLineHighlightOnlyWhenFocus": "エディタがフォーカスされているときのみ、現在の行のハイライトをレンダリングするかどうかを制御します。",
"editor.renderWhitespace3": "末尾の空白文字のみをレンダリングする。",
"editor.scrollbar.horizontal": "水平スクロールバーの表示/非表示を制御します。",
@@ -170,6 +194,7 @@
"newPlugin": "新しいプラグインの構築"
},
"git": {
+ "aFewSecondsAgo": "さきほど",
"addSignedOff": "サイン・オフ・バイの追加",
"amendReuseMessag": "最後のコミットメッセージを再利用するには、「Enter」または「Escape」を押してキャンセルしてください。",
"amendRewrite": "前回のコミットメッセージを書き換えます。確定するには「Enter」を、キャンセルするには「Escape」を押してください。",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "キーバインドがコリジョン中",
"requiredKeybindingValidation": "キーバインド値が必要です",
"resetKeybindingConfirmation": "このキーバインドを本当に初期値に戻すのですか?",
- "resetKeybindingTitle": "{0}のキーバインドをリセットする"
+ "resetKeybindingTitle": "{0}のキーバインドをリセットする",
+ "resetMultipleKeybindingsWarning": "このコマンドに複数のキーバインドが存在する場合は、すべてのキーバインドがリセットされます。"
},
"localize": {
"offlineTooltip": "バックエンドに接続できません。"
@@ -354,10 +380,14 @@
"typeHierarchy": "タイプ階層"
},
"vsx-registry": {
- "openVSX": "VSXレジストリを開く",
+ "errorFetching": "拡張機能の取得にエラーが発生しました。",
"recommendedExtensions": "このワークスペースでの使用が推奨される拡張機能の名前のリストです。",
"searchPlaceholder": "{0}で拡張子を検索",
- "showRecommendedExtensions": "拡張機能の推奨事項について、通知を表示するかどうかを制御します。"
+ "showRecommendedExtensions": "拡張機能の推奨事項について、通知を表示するかどうかを制御します。",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "拡張子の削除中にエラーが発生しました。{0}.",
+ "update-version-version-error": "バージョン{0} のインストールに失敗しました。{1} 。"
+ }
},
"webview": {
"goToReadme": "READMEに戻る",
diff --git a/packages/core/i18n/nls.json b/packages/core/i18n/nls.json
index b21a2bd517ff5..8c79f8948245c 100644
--- a/packages/core/i18n/nls.json
+++ b/packages/core/i18n/nls.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Disassembly View",
"theia": {
"callhierarchy": {
"noCallers": "No callers have been detected.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Select workspace root to add configuration to",
"continueAll": "Continue All",
"copyExpressionValue": "Copy Expression Value",
+ "disassembly-view": {
+ "show-source-code": "Show Source Code in Disassembly View."
+ },
+ "instruction-breakpoint": "Instruction Breakpoint",
+ "instructionAddress": "Address",
+ "instructionBytes": "Bytes",
+ "instructionNotAvailable": "Disassembly not available.",
+ "instructionText": "Instruction",
"missingConfiguration": "Dynamic configuration '{0}:{1}' is missing or not applicable",
+ "open-disassembly-view": "Open Disassembly View",
"pauseAll": "Pause All",
"reveal": "Reveal",
"threads": "Threads",
"toggleTracing": "Enable/disable tracing communications with debug adapters"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "instructions"
+ },
"editor": {
"diffEditor.maxFileSize": "Maximum file size in MB for which to compute diffs. Use 0 for no limit.",
"editor.accessibilityPageSize": "Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default.",
"editor.autoClosingDelete": "Controls whether the editor should remove adjacent closing quotes or brackets when deleting.",
"editor.autoClosingDelete1": "Remove adjacent closing quotes or brackets only if they were automatically inserted.",
- "editor.bracketPairColorization.enabled": "Controls whether bracket pair colorization is enabled or not. Use 'workbench.colorCustomizations' to override the bracket highlight colors.",
+ "editor.bracketPairColorization.enabled": "Controls whether bracket pair colorization is enabled or not. Use `#workbench.colorCustomizations#` to override the bracket highlight colors.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Controls whether each bracket type has its own independent color pool.",
"editor.codeLensFontSize": "Controls the font size in pixels for CodeLens. When set to `0`, 90% of `#editor.fontSize#` is used.",
"editor.find.autoFindInSelection0": "Never turn on Find in Selection automatically (default).",
"editor.find.autoFindInSelection1": "Always turn on Find in Selection automatically.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Enables horizontal guides only for the active bracket pair.",
"editor.guides.bracketPairsHorizontal2": "Disables horizontal bracket pair guides.",
"editor.guides.highlightActiveBracketPair": "Controls whether the editor should highlight the active bracket pair.",
+ "editor.guides.highlightActiveIndentation0": "Highlights the active indent guide.",
+ "editor.guides.highlightActiveIndentation1": "Highlights the active indent guide even if bracket guides are highlighted.",
+ "editor.guides.highlightActiveIndentation2": "Do not highlight the active indent guide.",
"editor.hover.above": "Prefer showing hovers above the line, if there's space.",
"editor.inlayHints.enabled": "Enables the inlay hints in the editor.",
+ "editor.inlayHints.enabled0": "Inlay hints are enabled",
+ "editor.inlayHints.enabled1": "Inlay hints are showing by default and hide when holding `Ctrl+Alt`",
+ "editor.inlayHints.enabled2": "Inlay hints are hidden by default and show when holding `Ctrl+Alt`",
+ "editor.inlayHints.enabled3": "Inlay hints are disabled",
"editor.inlayHints.fontFamily": "Controls font family of inlay hints in the editor. When set to empty, the `#editor.fontFamily#` is used.",
- "editor.inlayHints.fontSize": "Controls font size of inlay hints in the editor. A default of 90% of `#editor.fontSize#` is used when the configured value is less than `5` or greater than the editor font size.",
+ "editor.inlayHints.fontSize": "Controls font size of inlay hints in the editor. As default the `#editor.fontSize#` is used when the configured value is less than `5` or greater than the editor font size.",
"editor.inlineSuggest.enabled": "Controls whether to automatically show inline suggestions in the editor.",
"editor.language.colorizedBracketPairs": "Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled.",
"editor.lineHeight": "Controls the line height. \n - Use 0 to automatically compute the line height from the font size.\n - Values between 0 and 8 will be used as a multiplier with the font size.\n - Values greater than or equal to 8 will be used as effective values.",
+ "editor.quickSuggestions0": "Quick suggestions show inside the suggest widget",
+ "editor.quickSuggestions1": "Quick suggestions show as ghost text",
+ "editor.quickSuggestions2": "Quick suggestions are disabled",
"editor.renderLineHighlightOnlyWhenFocus": "Controls if the editor should render the current line highlight only when the editor is focused.",
"editor.renderWhitespace3": "Render only trailing whitespace characters.",
"editor.scrollbar.horizontal": "Controls the visibility of the horizontal scrollbar.",
@@ -170,6 +194,7 @@
"newPlugin": "Building a New Plugin"
},
"git": {
+ "aFewSecondsAgo": "a few seconds ago",
"addSignedOff": "Add Signed-off-by",
"amendReuseMessag": "To reuse the last commit message, press 'Enter' or 'Escape' to cancel.",
"amendRewrite": "Rewrite previous commit message. Press 'Enter' to confirm or 'Escape' to cancel.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "keybinding currently collides",
"requiredKeybindingValidation": "keybinding value is required",
"resetKeybindingConfirmation": "Do you really want to reset this keybinding to its default value?",
- "resetKeybindingTitle": "Reset keybinding for {0}"
+ "resetKeybindingTitle": "Reset keybinding for {0}",
+ "resetMultipleKeybindingsWarning": "If multiple keybindings exist for this command, all of them will be reset."
},
"localize": {
"offlineTooltip": "Cannot connect to backend."
@@ -354,10 +380,14 @@
"typeHierarchy": "Type Hierarchy"
},
"vsx-registry": {
- "openVSX": "Open VSX Registry",
+ "errorFetching": "Error fetching extensions.",
"recommendedExtensions": "A list of the names of extensions recommended for use in this workspace.",
"searchPlaceholder": "Search Extensions in {0}",
- "showRecommendedExtensions": "Controls whether notifications are shown for extension recommendations."
+ "showRecommendedExtensions": "Controls whether notifications are shown for extension recommendations.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Error while removing the extension: {0}.",
+ "update-version-version-error": "Failed to install version {0} of {1}."
+ }
},
"webview": {
"goToReadme": "Go To README",
diff --git a/packages/core/i18n/nls.pl.json b/packages/core/i18n/nls.pl.json
index 1744978976ee4..9bb7bf5902100 100644
--- a/packages/core/i18n/nls.pl.json
+++ b/packages/core/i18n/nls.pl.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Widok z demontażu",
"theia": {
"callhierarchy": {
"noCallers": "Nie wykryto żadnych rozmówców.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Wybierz główny obszar roboczy, do którego chcesz dodać konfigurację",
"continueAll": "Kontynuuj Wszystko",
"copyExpressionValue": "Kopiuj wartość wyrażenia",
+ "disassembly-view": {
+ "show-source-code": "Pokaż kod źródłowy w widoku demontażu."
+ },
+ "instruction-breakpoint": "Punkt przerwania instrukcji",
+ "instructionAddress": "Adres",
+ "instructionBytes": "Bajty",
+ "instructionNotAvailable": "Demontaż nie jest dostępny.",
+ "instructionText": "Instrukcja",
"missingConfiguration": "Brak konfiguracji dynamicznej \"{0}:{1}\" lub nie ma ona zastosowania.",
+ "open-disassembly-view": "Otwarty widok demontażu",
"pauseAll": "Pauza Wszystkie",
"reveal": "Ujawnij",
"threads": "Nici",
"toggleTracing": "Włączanie/wyłączanie śledzenia komunikacji z adapterami debugowania"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "instrukcje"
+ },
"editor": {
"diffEditor.maxFileSize": "Maksymalny rozmiar pliku w MB, dla którego mają być obliczane różnice. Wartość 0 oznacza brak limitu.",
"editor.accessibilityPageSize": "Określa liczbę linii w edytorze, które mogą być odczytywane jednocześnie przez czytnik ekranu. Po wykryciu czytnika ekranu automatycznie ustawiamy wartość domyślną na 500. Uwaga: ma to wpływ na wydajność w przypadku liczb większych niż domyślne.",
"editor.autoClosingDelete": "Określa, czy edytor ma usuwać przylegające cudzysłowy lub nawiasy zamykające podczas usuwania.",
"editor.autoClosingDelete1": "Usuń sąsiednie cudzysłowy lub nawiasy zamykające tylko wtedy, gdy zostały wstawione automatycznie.",
"editor.bracketPairColorization.enabled": "Określa, czy kolorowanie par nawiasów jest włączone, czy nie. Użyj 'workbench.colorCustomizations', aby zmienić kolory podświetlenia nawiasów.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Kontroluje, czy każdy typ wspornika ma swoją własną, niezależną pulę kolorów.",
"editor.codeLensFontSize": "Kontroluje rozmiar czcionki w pikselach dla CodeLens. Gdy ustawione na `0`, używane jest 90% z `#editor.fontSize#`.",
"editor.find.autoFindInSelection0": "Nigdy nie włączaj funkcji Znajdź w zaznaczeniu automatycznie (ustawienie domyślne).",
"editor.find.autoFindInSelection1": "Zawsze automatycznie włączaj funkcję Znajdź w zaznaczeniu.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Włącza prowadnice poziome tylko dla aktywnej pary wsporników.",
"editor.guides.bracketPairsHorizontal2": "Wyłącza prowadnice par wsporników poziomych.",
"editor.guides.highlightActiveBracketPair": "Określa, czy edytor ma podświetlać aktywną parę nawiasów.",
+ "editor.guides.highlightActiveIndentation0": "Podświetla aktywną prowadnicę wcięcia.",
+ "editor.guides.highlightActiveIndentation1": "Podświetla aktywną prowadnicę wcięcia, nawet jeśli prowadnice wsporników są podświetlone.",
+ "editor.guides.highlightActiveIndentation2": "Nie podświetlaj aktywnego przewodnika po wcięciach.",
"editor.hover.above": "Preferuj wyświetlanie nad linią, jeśli jest na to miejsce.",
"editor.inlayHints.enabled": "Włącza podpowiedzi wkładek w edytorze.",
+ "editor.inlayHints.enabled0": "Podpowiedzi dotyczące nakładek są włączone",
+ "editor.inlayHints.enabled1": "Podpowiedzi są domyślnie wyświetlane i ukrywają się po przytrzymaniu `Ctrl+Alt`.",
+ "editor.inlayHints.enabled2": "Podpowiedzi są domyślnie ukryte i pokazują się po przytrzymaniu `Ctrl+Alt`.",
+ "editor.inlayHints.enabled3": "Podpowiedzi układania są wyłączone",
"editor.inlayHints.fontFamily": "Kontroluje rodzinę czcionek podpowiedzi wkładek w edytorze. Jeśli jest ustawione na puste, używana jest `#editor.fontFamily#`.",
"editor.inlayHints.fontSize": "Kontroluje rozmiar czcionki podpowiedzi wkładek w edytorze. Domyślnie 90% `#editor.fontSize#` jest używane, gdy skonfigurowana wartość jest mniejsza niż `5` lub większa niż rozmiar czcionki edytora.",
"editor.inlineSuggest.enabled": "Określa, czy w edytorze mają być automatycznie wyświetlane sugestie inline.",
"editor.language.colorizedBracketPairs": "Określa pary nawiasów, które są kolorowane według poziomu ich zagnieżdżenia, jeśli kolorowanie par nawiasów jest włączone.",
"editor.lineHeight": "Steruje wysokością wiersza.\n - Wartość 0 powoduje automatyczne obliczenie wysokości wiersza na podstawie rozmiaru czcionki.\n - Wartości z przedziału od 0 do 8 zostaną użyte jako mnożnik rozmiaru czcionki.\n - Wartości większe lub równe 8 będą używane jako wartości efektywne.",
+ "editor.quickSuggestions0": "Szybkie sugestie wyświetlane wewnątrz widżetu sugestii",
+ "editor.quickSuggestions1": "Szybkie sugestie są wyświetlane jako tekst widmo",
+ "editor.quickSuggestions2": "Szybkie sugestie są wyłączone",
"editor.renderLineHighlightOnlyWhenFocus": "Określa, czy edytor ma wyświetlać podświetlenie bieżącej linii tylko wtedy, gdy edytor jest skoncentrowany.",
"editor.renderWhitespace3": "Renderuj tylko końcowe znaki białych spacji.",
"editor.scrollbar.horizontal": "Umożliwia sterowanie widocznością poziomego paska przewijania.",
@@ -170,6 +194,7 @@
"newPlugin": "Tworzenie nowego pluginu"
},
"git": {
+ "aFewSecondsAgo": "kilka sekund temu",
"addSignedOff": "Dodaj podpisane przez",
"amendReuseMessag": "Aby ponownie użyć ostatniego komunikatu commit, należy nacisnąć 'Enter' lub 'Escape', aby anulować.",
"amendRewrite": "Ponownie napisać poprzednią wiadomość. Wcisnąć 'Enter', aby potwierdzić lub 'Escape', aby anulować.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "przypisanie klawiszy aktualnie koliduje",
"requiredKeybindingValidation": "wymagana jest wartość wiązania klawiszy",
"resetKeybindingConfirmation": "Czy naprawdę chcesz przywrócić domyślną wartość tego powiązania klawiszy?",
- "resetKeybindingTitle": "Zresetuj przypisanie klawiszy dla {0}."
+ "resetKeybindingTitle": "Zresetuj przypisanie klawiszy dla {0}.",
+ "resetMultipleKeybindingsWarning": "Jeśli dla tego polecenia istnieje wiele przypisań klawiszy, wszystkie zostaną zresetowane."
},
"localize": {
"offlineTooltip": "Nie można połączyć się z backendem."
@@ -354,10 +380,14 @@
"typeHierarchy": "Hierarchia typów"
},
"vsx-registry": {
- "openVSX": "Otwórz Rejestr VSX",
+ "errorFetching": "Błąd pobierania rozszerzeń.",
"recommendedExtensions": "Lista nazw rozszerzeń zalecanych do użycia w tym obszarze roboczym.",
"searchPlaceholder": "Wyszukaj rozszerzenia w {0}.",
- "showRecommendedExtensions": "Określa, czy dla zaleceń dotyczących rozszerzeń mają być wyświetlane powiadomienia."
+ "showRecommendedExtensions": "Określa, czy dla zaleceń dotyczących rozszerzeń mają być wyświetlane powiadomienia.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Błąd podczas usuwania rozszerzenia: {0}.",
+ "update-version-version-error": "Nie udało się zainstalować wersji {0} z {1}."
+ }
},
"webview": {
"goToReadme": "Przejdź do pliku README",
diff --git a/packages/core/i18n/nls.pt-br.json b/packages/core/i18n/nls.pt-br.json
index 4f8d84f6c8c10..ac72e288a3b5a 100644
--- a/packages/core/i18n/nls.pt-br.json
+++ b/packages/core/i18n/nls.pt-br.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Vista de Desmontagem",
"theia": {
"callhierarchy": {
"noCallers": "Nenhum chamador foi detectado.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Selecione a raiz do espaço de trabalho para adicionar configuração a",
"continueAll": "Continuar Todos",
"copyExpressionValue": "Valor de Expressão de Cópia",
+ "disassembly-view": {
+ "show-source-code": "Mostrar Código Fonte em Vista de Desmontagem."
+ },
+ "instruction-breakpoint": "Ponto de Interrupção da Instrução",
+ "instructionAddress": "Endereço",
+ "instructionBytes": "Bytes",
+ "instructionNotAvailable": "Desmontagem não disponível.",
+ "instructionText": "Instrução",
"missingConfiguration": "A configuração dinâmica '{0}:{1}' está ausente ou não é aplicável",
+ "open-disassembly-view": "Vista de Desmontagem Aberta",
"pauseAll": "Pausa Todos",
"reveal": "Revelar",
"threads": "Tópicos",
"toggleTracing": "Habilitar/desabilitar as comunicações de rastreamento com adaptadores de depuração"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "instruções"
+ },
"editor": {
"diffEditor.maxFileSize": "Tamanho máximo de arquivo em MB para o qual calcular diffs. Usar 0 para sem limite.",
"editor.accessibilityPageSize": "Controla o número de linhas no editor que podem ser lidas por um leitor de tela de uma só vez. Quando detectamos um leitor de tela, definimos automaticamente o padrão como sendo 500. Aviso: isto tem uma implicação de desempenho para números maiores do que o padrão.",
"editor.autoClosingDelete": "Controla se o editor deve remover as cotações de fechamento adjacentes ou parênteses ao apagar.",
"editor.autoClosingDelete1": "Remover as cotações de fechamento ou colchetes adjacentes somente se elas forem inseridas automaticamente.",
"editor.bracketPairColorization.enabled": "Controla se a colorização do par de suportes está ou não habilitada. Use 'workbench.colorCustomizations' para sobrepor as cores de realce do par de braquetes.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Controla se cada tipo de suporte tem seu próprio pool de cores independente.",
"editor.codeLensFontSize": "Controla o tamanho da fonte em pixels para a CodeLens. Quando ajustado para `0', 90% do `#editor.fontSize#' é utilizado.",
"editor.find.autoFindInSelection0": "Nunca ative o Find in Selection automaticamente (padrão).",
"editor.find.autoFindInSelection1": "Ative sempre a opção Find in Selection automaticamente.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Possibilita guias horizontais somente para o par de suportes ativos.",
"editor.guides.bracketPairsHorizontal2": "Desativa as guias de par de suportes horizontais.",
"editor.guides.highlightActiveBracketPair": "Controla se o editor deve destacar o par de suportes ativos.",
+ "editor.guides.highlightActiveIndentation0": "Destaca o guia de travessão ativo.",
+ "editor.guides.highlightActiveIndentation1": "Destaca o guia de travessão ativo, mesmo que as guias de parênteses sejam destacadas.",
+ "editor.guides.highlightActiveIndentation2": "Não destacar o guia de travessão ativo.",
"editor.hover.above": "Prefira mostrar acima da linha, se houver espaço.",
"editor.inlayHints.enabled": "Possibilita as dicas de embutir no editor.",
+ "editor.inlayHints.enabled0": "As dicas de Inlay estão habilitadas",
+ "editor.inlayHints.enabled1": "Dicas de Inlay estão mostrando por padrão e se escondem ao segurar `Ctrl+Alt`.",
+ "editor.inlayHints.enabled2": "Dicas de Inlay são ocultadas por padrão e mostram quando se segura `Ctrl+Alt`.",
+ "editor.inlayHints.enabled3": "As dicas da Inlay estão desativadas",
"editor.inlayHints.fontFamily": "Controla a família de fontes de dicas de incrustação no editor. Quando ajustado para vazio, é utilizado o `#editor.fontFamily#'.",
"editor.inlayHints.fontSize": "Controla o tamanho da fonte das dicas de inlay no editor. Um padrão de 90% de `#editor.fontSize#` é utilizado quando o valor configurado é menor que `5` ou maior que o tamanho da fonte do editor.",
"editor.inlineSuggest.enabled": "Controla se as sugestões em linha devem ser mostradas automaticamente no editor.",
"editor.language.colorizedBracketPairs": "Define os pares de parênteses que são coloridos por seu nível de agrupamento, se a colorização dos pares de parênteses estiver habilitada.",
"editor.lineHeight": "Controla a altura da linha.\n - Use 0 para calcular automaticamente a altura da linha a partir do tamanho da fonte.\n - Valores entre 0 e 8 serão usados como um multiplicador com o tamanho da fonte.\n - Valores maiores ou iguais a 8 serão usados como valores efetivos.",
+ "editor.quickSuggestions0": "Sugestões rápidas mostram dentro do widget sugerir",
+ "editor.quickSuggestions1": "Sugestões rápidas mostram como texto fantasma",
+ "editor.quickSuggestions2": "Sugestões rápidas são desativadas",
"editor.renderLineHighlightOnlyWhenFocus": "Controla se o editor deve destacar a linha atual apenas quando o editor está focado.",
"editor.renderWhitespace3": "Renderizar apenas caracteres de espaços em branco.",
"editor.scrollbar.horizontal": "Controla a visibilidade da barra de rolagem horizontal.",
@@ -170,6 +194,7 @@
"newPlugin": "Construindo um Novo Plugin"
},
"git": {
+ "aFewSecondsAgo": "alguns segundos atrás",
"addSignedOff": "Adicionar Signed-off-by",
"amendReuseMessag": "Para reutilizar a última mensagem de compromisso, pressione 'Enter' ou 'Escape' para cancelar.",
"amendRewrite": "Reescrever mensagem de compromisso anterior. Pressione 'Enter' para confirmar ou 'Escape' para cancelar.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "a chave de encadernação colide atualmente",
"requiredKeybindingValidation": "valor vinculante é necessário",
"resetKeybindingConfirmation": "Você realmente quer redefinir esta ligação de chave para seu valor padrão?",
- "resetKeybindingTitle": "Redefinir a encadernação para {0}"
+ "resetKeybindingTitle": "Redefinir a encadernação para {0}",
+ "resetMultipleKeybindingsWarning": "Se existirem múltiplas ligações de teclas para este comando, todas elas serão reiniciadas."
},
"localize": {
"offlineTooltip": "Não pode ser conectado ao backend."
@@ -354,10 +380,14 @@
"typeHierarchy": "Tipo Hierarquia"
},
"vsx-registry": {
- "openVSX": "Registro VSX aberto",
+ "errorFetching": "Extensões de erro de busca.",
"recommendedExtensions": "Uma lista dos nomes das extensões recomendadas para uso neste espaço de trabalho.",
"searchPlaceholder": "Pesquisar extensões em {0}",
- "showRecommendedExtensions": "Controla se as notificações são mostradas para recomendações de extensão."
+ "showRecommendedExtensions": "Controla se as notificações são mostradas para recomendações de extensão.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Erro ao remover a extensão: {0}.",
+ "update-version-version-error": "Falha na instalação da versão {0} de {1}."
+ }
},
"webview": {
"goToReadme": "Ir para o LEIAME",
diff --git a/packages/core/i18n/nls.pt-pt.json b/packages/core/i18n/nls.pt-pt.json
index 3d400b431b832..49e0da0a9a5cd 100644
--- a/packages/core/i18n/nls.pt-pt.json
+++ b/packages/core/i18n/nls.pt-pt.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Vista de Desmontagem",
"theia": {
"callhierarchy": {
"noCallers": "Não foram detectadas pessoas que tenham telefonado.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Seleccione a raiz do espaço de trabalho para adicionar configuração a",
"continueAll": "Continuar Tudo",
"copyExpressionValue": "Valor de Expressão da Cópia",
+ "disassembly-view": {
+ "show-source-code": "Mostrar Código Fonte em Vista de Desmontagem."
+ },
+ "instruction-breakpoint": "Ponto de Interrupção da Instrução",
+ "instructionAddress": "Endereço",
+ "instructionBytes": "Bytes",
+ "instructionNotAvailable": "Desmontagem não disponível.",
+ "instructionText": "Instrução",
"missingConfiguration": "Configuração dinâmica '{0}:{1}' está em falta ou não é aplicável",
+ "open-disassembly-view": "Vista de Desmontagem Aberta",
"pauseAll": "Pausa Todos",
"reveal": "Revelar",
"threads": "Tópicos",
"toggleTracing": "Activar/desactivar as comunicações de rastreio com adaptadores de depuração"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "instruções"
+ },
"editor": {
"diffEditor.maxFileSize": "Tamanho máximo do ficheiro em MB para o qual se devem calcular diffs. Utilizar 0 para sem limite.",
"editor.accessibilityPageSize": "Controla o número de linhas no editor que podem ser lidas por um leitor de ecrã de uma só vez. Quando detectamos um leitor de ecrã, definimos automaticamente o valor por defeito de 500. Aviso: isto tem uma implicação de desempenho para números maiores do que o padrão.",
"editor.autoClosingDelete": "Controla se o editor deve remover aspas ou parênteses de fecho adjacentes ao apagar.",
"editor.autoClosingDelete1": "Retirar as aspas ou parênteses de fecho adjacentes apenas se forem automaticamente inseridas.",
"editor.bracketPairColorization.enabled": "Controla se a colorização do par de parênteses está ou não activada. Utilizar 'workbench.colorCustomizations' para anular as cores de realce do par de parênteses.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Controla se cada tipo de suporte tem a sua própria piscina de cores independente.",
"editor.codeLensFontSize": "Controla o tamanho da fonte em pixels para a CodeLens. Quando definido para `0`, 90% do `#editor.fontSize#` é utilizado.",
"editor.find.autoFindInSelection0": "Nunca ligar o Find in Selection automaticamente (por defeito).",
"editor.find.autoFindInSelection1": "Ligar sempre o Find in Selection automaticamente.",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Possibilita guias horizontais apenas para o par de suportes activos.",
"editor.guides.bracketPairsHorizontal2": "Desactiva as guias de par de suportes horizontais.",
"editor.guides.highlightActiveBracketPair": "Controla se o editor deve destacar o par de parênteses activos.",
+ "editor.guides.highlightActiveIndentation0": "Destaca o guia de travessão activo.",
+ "editor.guides.highlightActiveIndentation1": "Realça o guia de travessão activo, mesmo que os guias de parênteses sejam realçados.",
+ "editor.guides.highlightActiveIndentation2": "Não destacar o guia de travessão activo.",
"editor.hover.above": "Prefira mostrar acima da linha, se houver espaço.",
"editor.inlayHints.enabled": "Possibilita as dicas de inlay no editor.",
+ "editor.inlayHints.enabled0": "As dicas de Inlay estão activadas",
+ "editor.inlayHints.enabled1": "Dicas de Inlay estão a mostrar por defeito e escondem-se quando se segura \"Ctrl+Alt\".",
+ "editor.inlayHints.enabled2": "Dicas de Inlay são ocultadas por defeito e mostram quando se mantém 'Ctrl+Alt'.",
+ "editor.inlayHints.enabled3": "As pistas de Inlay estão desactivadas",
"editor.inlayHints.fontFamily": "Controla a família de fontes de inlay dicas no editor. Quando definido para vazio, é utilizado o `#editor.fontFamily#`.",
"editor.inlayHints.fontSize": "Controla o tamanho do tipo de letra das dicas de inlay no editor. Um padrão de 90% de `#editor.fontSize#` é utilizado quando o valor configurado é inferior a `5` ou superior ao tamanho da fonte do editor.",
"editor.inlineSuggest.enabled": "Controla se deve mostrar automaticamente as sugestões em linha no editor.",
"editor.language.colorizedBracketPairs": "Define os pares de parênteses que são coloridos pelo seu nível de aninhamento se a colorização dos pares de parênteses estiver habilitada.",
"editor.lineHeight": "Controla a altura da linha.\n - Utilizar 0 para calcular automaticamente a altura da linha a partir do tamanho da fonte.\n - Os valores entre 0 e 8 serão utilizados como multiplicador com o tamanho da fonte.\n - Valores maiores ou iguais a 8 serão utilizados como valores efectivos.",
+ "editor.quickSuggestions0": "Sugestões rápidas mostram dentro do widget sugerir",
+ "editor.quickSuggestions1": "Sugestões rápidas mostram como texto fantasma",
+ "editor.quickSuggestions2": "Sugestões rápidas são desactivadas",
"editor.renderLineHighlightOnlyWhenFocus": "Controla se o editor deve destacar a linha actual apenas quando o editor está concentrado.",
"editor.renderWhitespace3": "Renderizar apenas caracteres de espaços em branco.",
"editor.scrollbar.horizontal": "Controla a visibilidade da barra de deslocamento horizontal.",
@@ -170,6 +194,7 @@
"newPlugin": "Construir um Novo Plugin"
},
"git": {
+ "aFewSecondsAgo": "há alguns segundos",
"addSignedOff": "Adicionar Signed-off-by",
"amendReuseMessag": "Para reutilizar a última mensagem de compromisso, prima 'Enter' ou 'Escape' para cancelar.",
"amendRewrite": "Reescrever mensagem de compromisso anterior. Prima 'Enter' para confirmar ou 'Escape' para cancelar.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "ligação de chaves actualmente colide",
"requiredKeybindingValidation": "é necessário um valor de encadernação",
"resetKeybindingConfirmation": "Quer mesmo repor esta encadernação de chave no seu valor por defeito?",
- "resetKeybindingTitle": "Repor a encadernação para {0}"
+ "resetKeybindingTitle": "Repor a encadernação para {0}",
+ "resetMultipleKeybindingsWarning": "Se existirem múltiplas ligações de teclas para este comando, todas elas serão reiniciadas."
},
"localize": {
"offlineTooltip": "Não se pode ligar ao backend."
@@ -354,10 +380,14 @@
"typeHierarchy": "Tipo Hierarquia"
},
"vsx-registry": {
- "openVSX": "Abrir Registo VSX",
+ "errorFetching": "Extensões de erro de busca.",
"recommendedExtensions": "Uma lista dos nomes das extensões recomendadas para utilização neste espaço de trabalho.",
"searchPlaceholder": "Pesquisar extensões em {0}",
- "showRecommendedExtensions": "Controla se as notificações são mostradas para recomendações de extensão."
+ "showRecommendedExtensions": "Controla se as notificações são mostradas para recomendações de extensão.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Erro ao retirar a extensão: {0}.",
+ "update-version-version-error": "Falha na instalação da versão {0} de {1}."
+ }
},
"webview": {
"goToReadme": "Ir para LEIAME",
diff --git a/packages/core/i18n/nls.ru.json b/packages/core/i18n/nls.ru.json
index 5088cf4db869b..decc6f03a97f5 100644
--- a/packages/core/i18n/nls.ru.json
+++ b/packages/core/i18n/nls.ru.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "Вид в разобранном виде",
"theia": {
"callhierarchy": {
"noCallers": "Вызывающих не обнаружено.",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "Выберите корень рабочего пространства для добавления конфигурации",
"continueAll": "Продолжить все",
"copyExpressionValue": "Копирование значения выражения",
+ "disassembly-view": {
+ "show-source-code": "Показать исходный код в режиме просмотра разборки."
+ },
+ "instruction-breakpoint": "Точка останова инструкции",
+ "instructionAddress": "Адрес",
+ "instructionBytes": "Байты",
+ "instructionNotAvailable": "Разборка недоступна.",
+ "instructionText": "Инструкция",
"missingConfiguration": "Динамическая конфигурация '{0}:{1}' отсутствует или неприменима",
+ "open-disassembly-view": "Открытый вид разборки",
"pauseAll": "Приостановить все",
"reveal": "Раскрыть",
"threads": "Нитки",
"toggleTracing": "Включение/выключение трассировки связи с отладочными адаптерами"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "инструкции"
+ },
"editor": {
"diffEditor.maxFileSize": "Максимальный размер файла в МБ, для которого следует вычислять различия. Используйте 0 для отсутствия ограничений.",
"editor.accessibilityPageSize": "Управляет количеством строк в редакторе, которые могут быть одновременно считаны устройством чтения с экрана. Когда мы обнаруживаем устройство чтения с экрана, мы автоматически устанавливаем значение по умолчанию 500. Внимание: это имеет последствия для производительности при числах, превышающих значение по умолчанию.",
"editor.autoClosingDelete": "Управляет тем, должен ли редактор удалять соседние закрывающие кавычки или скобки при удалении.",
"editor.autoClosingDelete1": "Удаляйте соседние закрывающие кавычки или скобки, только если они были вставлены автоматически.",
"editor.bracketPairColorization.enabled": "Управляет тем, включена или нет раскраска пар скобок. Используйте 'workbench.colorCustomizations', чтобы переопределить цвета подсветки скобок.",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "Управляет тем, имеет ли каждый тип скобок свой собственный независимый пул цветов.",
"editor.codeLensFontSize": "Управляет размером шрифта в пикселях для CodeLens. Если установлено значение `0`, используется 90% от `#editor.fontSize#`.",
"editor.find.autoFindInSelection0": "Никогда не включать функцию \"Найти в выделенном\" автоматически (по умолчанию).",
"editor.find.autoFindInSelection1": "Всегда автоматически включайте функцию \"Найти в выделенном\".",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "Включает горизонтальные направляющие только для активной пары скобок.",
"editor.guides.bracketPairsHorizontal2": "Отключает горизонтальные направляющие пары кронштейнов.",
"editor.guides.highlightActiveBracketPair": "Управляет тем, должен ли редактор выделять активную пару скобок.",
+ "editor.guides.highlightActiveIndentation0": "Выделяет активную направляющую отступа.",
+ "editor.guides.highlightActiveIndentation1": "Выделяет активную направляющую отступа, даже если выделены направляющие скобок.",
+ "editor.guides.highlightActiveIndentation2": "Не выделяйте активную направляющую отступа.",
"editor.hover.above": "Предпочитайте показывать над строкой, если есть свободное место.",
"editor.inlayHints.enabled": "Включает подсказки инкрустации в редакторе.",
+ "editor.inlayHints.enabled0": "Включены подсказки для инкрустации",
+ "editor.inlayHints.enabled1": "Подсказки инкрустации отображаются по умолчанию и скрываются при нажатии `Ctrl+Alt`.",
+ "editor.inlayHints.enabled2": "Подсказки инкрустации скрыты по умолчанию и отображаются при нажатии `Ctrl+Alt`.",
+ "editor.inlayHints.enabled3": "Подсказки для инкрустации отключены",
"editor.inlayHints.fontFamily": "Управляет семейством шрифтов подсказок инкрустации в редакторе. Если установлено значение empty, используется `#editor.fontFamily#`.",
"editor.inlayHints.fontSize": "Управляет размером шрифта подсказок инлея в редакторе. По умолчанию используется 90% от `#editor.fontSize#`, если настроенное значение меньше `5` или больше размера шрифта редактора.",
"editor.inlineSuggest.enabled": "Управляет тем, показывать ли автоматически встроенные предложения в редакторе.",
"editor.language.colorizedBracketPairs": "Определяет пары скобок, которые раскрашиваются по уровню вложенности, если раскраска пар скобок включена.",
"editor.lineHeight": "Управляет высотой строки.\n - Используйте значение 0, чтобы автоматически вычислить высоту строки на основе размера шрифта.\n - Значения от 0 до 8 будут использоваться как множитель с размером шрифта.\n - Значения больше или равные 8 будут использоваться как эффективные значения.",
+ "editor.quickSuggestions0": "Быстрые предложения отображаются внутри виджета предложений",
+ "editor.quickSuggestions1": "Быстрые предложения отображаются в виде призрачного текста",
+ "editor.quickSuggestions2": "Быстрые предложения отключены",
"editor.renderLineHighlightOnlyWhenFocus": "Управляет тем, должен ли редактор отображать подсветку текущей строки только тогда, когда редактор сфокусирован.",
"editor.renderWhitespace3": "Передача только пробельных символов в конце строки.",
"editor.scrollbar.horizontal": "Управляет видимостью горизонтальной полосы прокрутки.",
@@ -170,6 +194,7 @@
"newPlugin": "Создание нового плагина"
},
"git": {
+ "aFewSecondsAgo": "несколько секунд назад",
"addSignedOff": "Добавить подписанный",
"amendReuseMessag": "Чтобы повторно использовать последнее сообщение фиксации, нажмите 'Enter' или 'Escape' для отмены.",
"amendRewrite": "Переписать предыдущее сообщение о фиксации. Нажмите 'Enter' для подтверждения или 'Escape' для отмены.",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "привязка клавиш в настоящее время сталкивается",
"requiredKeybindingValidation": "требуется значение привязки клавиш",
"resetKeybindingConfirmation": "Вы действительно хотите сбросить привязку к клавишам до значения по умолчанию?",
- "resetKeybindingTitle": "Сброс привязки клавиш для {0}"
+ "resetKeybindingTitle": "Сброс привязки клавиш для {0}",
+ "resetMultipleKeybindingsWarning": "Если для этой команды существует несколько привязок клавиш, все они будут сброшены."
},
"localize": {
"offlineTooltip": "Не удается подключиться к бэкенду."
@@ -354,10 +380,14 @@
"typeHierarchy": "Иерархия типов"
},
"vsx-registry": {
- "openVSX": "Открыть реестр VSX",
+ "errorFetching": "Ошибка при получении расширений.",
"recommendedExtensions": "Список имен расширений, рекомендуемых для использования в данной рабочей области.",
"searchPlaceholder": "Поисковые расширения в {0}",
- "showRecommendedExtensions": "Служит для управления отображением уведомлений о рекомендациях расширения."
+ "showRecommendedExtensions": "Служит для управления отображением уведомлений о рекомендациях расширения.",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "Ошибка при удалении расширения: {0}.",
+ "update-version-version-error": "Не удалось установить версию {0} сайта {1}."
+ }
},
"webview": {
"goToReadme": "Перейти к README",
diff --git a/packages/core/i18n/nls.zh-cn.json b/packages/core/i18n/nls.zh-cn.json
index 0ebf1096865ae..fc44e39f3b42a 100644
--- a/packages/core/i18n/nls.zh-cn.json
+++ b/packages/core/i18n/nls.zh-cn.json
@@ -1,4 +1,5 @@
{
+ "disassemblyView": "拆卸视图",
"theia": {
"callhierarchy": {
"noCallers": "没有发现来电者。",
@@ -58,18 +59,31 @@
"addConfigurationPlaceholder": "选择要添加配置的工作区根",
"continueAll": "继续所有",
"copyExpressionValue": "复制表达式的值",
+ "disassembly-view": {
+ "show-source-code": "在反汇编视图中显示源代码。"
+ },
+ "instruction-breakpoint": "指令断点",
+ "instructionAddress": "地址",
+ "instructionBytes": "字节数",
+ "instructionNotAvailable": "不提供拆卸服务。",
+ "instructionText": "指示",
"missingConfiguration": "动态配置'{0}:{1}'缺少或不适用",
+ "open-disassembly-view": "开放式拆卸视图",
"pauseAll": "暂停所有",
"reveal": "显示",
"threads": "线程",
"toggleTracing": "启用/禁用与调试适配器的跟踪通信"
},
+ "disassembly-view": {
+ "disassemblyTableColumnLabel": "说明"
+ },
"editor": {
"diffEditor.maxFileSize": "要为其计算差异的最大文件大小(MB)。使用 0 表示无限制。",
"editor.accessibilityPageSize": "控制编辑器中可由屏幕阅读器一次读出的行数。当检测到屏幕阅读器时,会自动将默认值设置为 500。警告: 如果行数大于默认值,可能会影响性能。",
"editor.autoClosingDelete": "控制在删除时编辑器是否应删除相邻的右引号或右方括号。",
"editor.autoClosingDelete1": "只有在相邻的闭合引号或方括号被自动插入的情况下,才能删除它们。",
"editor.bracketPairColorization.enabled": "控制是否已启用括号对着色。使用 `#workbench.colorCustomizations#` 替代括号高亮颜色。",
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": "控制每个托架类型是否有自己独立的颜色池。",
"editor.codeLensFontSize": "控制 CodeLens 的字号(以像素为单位)。设置为 `0` 时,将使用 90% 的 `#editor.fontSize#`。",
"editor.find.autoFindInSelection0": "从不自动打开“在选定内容中查找”(默认)。",
"editor.find.autoFindInSelection1": "始终自动打开“在选定内容中查找”。",
@@ -88,13 +102,23 @@
"editor.guides.bracketPairsHorizontal1": "只对活动支架对启用水平导向。",
"editor.guides.bracketPairsHorizontal2": "禁用水平托架对导板。",
"editor.guides.highlightActiveBracketPair": "控制编辑器是否应突出显示活动的括号对。",
+ "editor.guides.highlightActiveIndentation0": "突出活动缩进指南。",
+ "editor.guides.highlightActiveIndentation1": "突出显示活动的缩进指南,即使括号内的指南被突出显示。",
+ "editor.guides.highlightActiveIndentation2": "不要突出显示活动缩进指南。",
"editor.hover.above": "如果有空间的话,更倾向于显示悬停在该线之上。",
"editor.inlayHints.enabled": "启用编辑器中的内联提示。",
+ "editor.inlayHints.enabled0": "镶嵌提示已启用",
+ "editor.inlayHints.enabled1": "镶嵌提示默认显示,按住 \"Ctrl+Alt \"时隐藏。",
+ "editor.inlayHints.enabled2": "镶嵌提示默认是隐藏的,当按住`Ctrl+Alt`时显示。",
+ "editor.inlayHints.enabled3": "镶嵌提示被禁用",
"editor.inlayHints.fontFamily": "控制编辑器中内联提示的字体家族。当设置为空时,使用`#editor.fontFamily#`。",
"editor.inlayHints.fontSize": "控制编辑器中内联提示的字体大小。当配置值小于`5'或大于编辑器的字体大小时,默认使用`#editor.fontSize#`的90%。",
"editor.inlineSuggest.enabled": "控制是否在编辑器中自动显示内联建议。",
"editor.language.colorizedBracketPairs": "如果启用了括号对着色,则定义括号对按其嵌套级别进行着色。",
"editor.lineHeight": "控制行高。\n - 使用0可以根据字体大小自动计算行高。\n - 0到8之间的值将被用作字体大小的乘数。\n - 大于或等于8的值将作为有效值使用。",
+ "editor.quickSuggestions0": "快速建议显示在建议小部件内",
+ "editor.quickSuggestions1": "快速建议显示为幽灵文本",
+ "editor.quickSuggestions2": "快速建议被禁用",
"editor.renderLineHighlightOnlyWhenFocus": "控制编辑器是否应该只在编辑器被聚焦时呈现当前行的高亮。",
"editor.renderWhitespace3": "只渲染尾部的空白字符。",
"editor.scrollbar.horizontal": "控制水平滚动条的可见性。",
@@ -170,6 +194,7 @@
"newPlugin": "构建一个新的插件"
},
"git": {
+ "aFewSecondsAgo": "几秒钟前",
"addSignedOff": "添加 \"已签署\"。",
"amendReuseMessag": "要重新使用最后一条提交信息,请按'Enter'或'Escape'来取消。",
"amendRewrite": "重写之前的提交信息。按'Enter'键确认或按'Escape'键取消。",
@@ -203,7 +228,8 @@
"keybindingCollidesValidation": "键盘绑定目前碰撞",
"requiredKeybindingValidation": "键盘绑定值是必需的",
"resetKeybindingConfirmation": "你真的想把这个按键绑定重置为默认值吗?",
- "resetKeybindingTitle": "重置{0}的键盘绑定"
+ "resetKeybindingTitle": "重置{0}的键盘绑定",
+ "resetMultipleKeybindingsWarning": "如果这个命令存在多个按键绑定,所有的按键都将被重置。"
},
"localize": {
"offlineTooltip": "无法连接到后端。"
@@ -354,10 +380,14 @@
"typeHierarchy": "类型层次结构"
},
"vsx-registry": {
- "openVSX": "打开VSX注册表",
+ "errorFetching": "取出扩展程序时出错。",
"recommendedExtensions": "建议在该工作区使用的扩展名称的列表。",
"searchPlaceholder": "在{0}中搜索扩展",
- "showRecommendedExtensions": "控制是否显示扩展建议的通知。"
+ "showRecommendedExtensions": "控制是否显示扩展建议的通知。",
+ "vsx-extensions-contribution": {
+ "update-version-uninstall-error": "删除扩展名时出错:{0}.",
+ "update-version-version-error": "{0} 在安装{1} 的版本时失败。"
+ }
},
"webview": {
"goToReadme": "转到README",
diff --git a/packages/core/package.json b/packages/core/package.json
index 1434d8b3fa6a9..ff349d3be5143 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@theia/core",
- "version": "1.27.0",
+ "version": "1.28.0",
"description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
"main": "lib/common/index.js",
"typings": "lib/common/index.d.ts",
@@ -16,8 +16,8 @@
"@phosphor/signaling": "1",
"@phosphor/virtualdom": "1",
"@phosphor/widgets": "1",
- "@theia/application-package": "1.27.0",
- "@theia/request": "1.27.0",
+ "@theia/application-package": "1.28.0",
+ "@theia/request": "1.28.0",
"@types/body-parser": "^1.16.4",
"@types/cookie": "^0.3.3",
"@types/dompurify": "^2.2.2",
@@ -26,8 +26,8 @@
"@types/lodash.debounce": "4.0.3",
"@types/lodash.throttle": "^4.1.3",
"@types/markdown-it": "^12.2.3",
- "@types/react": "^16.8.0",
- "@types/react-dom": "^16.8.0",
+ "@types/react": "^18.0.15",
+ "@types/react-dom": "^18.0.6",
"@types/react-virtualized": "^9.18.3",
"@types/route-parser": "^0.1.1",
"@types/safer-buffer": "^2.1.0",
@@ -58,8 +58,8 @@
"nsfw": "^2.1.2",
"p-debounce": "^2.1.0",
"perfect-scrollbar": "^1.3.0",
- "react": "^16.8.0",
- "react-dom": "^16.8.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
"react-tooltip": "^4.2.21",
"react-virtualized": "^9.20.0",
"reflect-metadata": "^0.1.10",
@@ -110,6 +110,7 @@
"fuzzy",
"inversify",
"react-dom",
+ "react-dom/client",
"react-virtualized",
"vscode-languageserver-protocol",
"vscode-uri"
@@ -194,8 +195,8 @@
"watch": "theiaext watch"
},
"devDependencies": {
- "@theia/ext-scripts": "1.27.0",
- "@theia/re-exports": "1.27.0",
+ "@theia/ext-scripts": "1.28.0",
+ "@theia/re-exports": "1.28.0",
"minimist": "^1.2.0"
},
"nyc": {
diff --git a/packages/core/shared/react-dom/client/index.d.ts b/packages/core/shared/react-dom/client/index.d.ts
new file mode 100644
index 0000000000000..f34a1f2a76d69
--- /dev/null
+++ b/packages/core/shared/react-dom/client/index.d.ts
@@ -0,0 +1 @@
+export * from 'react-dom/client';
diff --git a/packages/core/shared/react-dom/client/index.js b/packages/core/shared/react-dom/client/index.js
new file mode 100644
index 0000000000000..ed832bc3aac9c
--- /dev/null
+++ b/packages/core/shared/react-dom/client/index.js
@@ -0,0 +1 @@
+module.exports = require('react-dom/client');
diff --git a/packages/core/src/browser/breadcrumbs/breadcrumbs-renderer.tsx b/packages/core/src/browser/breadcrumbs/breadcrumbs-renderer.tsx
index 89966496d77ca..1166d4dbf324c 100644
--- a/packages/core/src/browser/breadcrumbs/breadcrumbs-renderer.tsx
+++ b/packages/core/src/browser/breadcrumbs/breadcrumbs-renderer.tsx
@@ -23,7 +23,6 @@ import PerfectScrollbar from 'perfect-scrollbar';
import URI from '../../common/uri';
import { Emitter, Event } from '../../common';
import { BreadcrumbPopupContainer } from './breadcrumb-popup-container';
-import { DisposableCollection } from '../../common/disposable';
import { CorePreferences } from '../core-preferences';
import { Breadcrumb, Styles } from './breadcrumbs-constants';
import { LabelProvider } from '../label-provider';
@@ -56,7 +55,6 @@ export class BreadcrumbsRenderer extends ReactRenderer {
protected breadcrumbs: Breadcrumb[] = [];
protected popup: BreadcrumbPopupContainer | undefined;
protected scrollbar: PerfectScrollbar | undefined;
- protected toDispose: DisposableCollection = new DisposableCollection();
get active(): boolean {
return !!this.breadcrumbs.length;
diff --git a/packages/core/src/browser/common-frontend-contribution.ts b/packages/core/src/browser/common-frontend-contribution.ts
index 9aac0b62fabaa..1a920732a89b3 100644
--- a/packages/core/src/browser/common-frontend-contribution.ts
+++ b/packages/core/src/browser/common-frontend-contribution.ts
@@ -39,20 +39,20 @@ import { StorageService } from './storage-service';
import { Navigatable } from './navigatable';
import { QuickViewService } from './quick-input/quick-view-service';
import { environment } from '@theia/application-package/lib/environment';
-import { IconThemeService } from './icon-theme-service';
+import { IconTheme, IconThemeService } from './icon-theme-service';
import { ColorContribution } from './color-application-contribution';
import { ColorRegistry } from './color-registry';
import { Color } from '../common/color';
import { CoreConfiguration, CorePreferences } from './core-preferences';
import { ThemeService } from './theming';
-import { PreferenceService, PreferenceScope, PreferenceChangeEvent } from './preferences';
+import { PreferenceService, PreferenceChangeEvent } from './preferences';
import { ClipboardService } from './clipboard-service';
import { EncodingRegistry } from './encoding-registry';
import { UTF8 } from '../common/encodings';
import { EnvVariablesServer } from '../common/env-variables';
import { AuthenticationService } from './authentication-service';
import { FormatType, Saveable, SaveOptions } from './saveable';
-import { QuickInputService, QuickPick, QuickPickItem, QuickPickItemOrSeparator } from './quick-input';
+import { QuickInputService, QuickPickItem, QuickPickItemOrSeparator } from './quick-input';
import { AsyncLocalizationProvider } from '../common/i18n/localization';
import { nls } from '../common/nls';
import { CurrentWidgetCommandAdapter } from './shell/current-widget-command-adapter';
@@ -430,12 +430,8 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
this.registerCtrlWHandling();
this.updateStyles();
- this.updateThemeFromPreference('workbench.colorTheme');
- this.updateThemeFromPreference('workbench.iconTheme');
this.preferences.ready.then(() => this.setSashProperties());
this.preferences.onPreferenceChanged(e => this.handlePreferenceChange(e, app));
- this.themeService.onDidColorThemeChange(() => this.updateThemePreference('workbench.colorTheme'));
- this.iconThemes.onDidChangeCurrent(() => this.updateThemePreference('workbench.iconTheme'));
app.shell.leftPanelHandler.addBottomMenu({
id: 'settings-menu',
@@ -475,43 +471,12 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
this.pinnedKey.set(value);
}
- protected updateThemePreference(preferenceName: 'workbench.colorTheme' | 'workbench.iconTheme'): void {
- const inspect = this.preferenceService.inspect(preferenceName);
- const workspaceValue = inspect && inspect.workspaceValue;
- const userValue = inspect && inspect.globalValue;
- const value = workspaceValue || userValue;
- const newValue = preferenceName === 'workbench.colorTheme' ? this.themeService.getCurrentTheme().id : this.iconThemes.current;
- if (newValue !== value) {
- const scope = workspaceValue !== undefined ? PreferenceScope.Workspace : PreferenceScope.User;
- this.preferenceService.set(preferenceName, newValue, scope);
- }
- }
-
- protected updateThemeFromPreference(preferenceName: 'workbench.colorTheme' | 'workbench.iconTheme'): void {
- const inspect = this.preferenceService.inspect(preferenceName);
- const workspaceValue = inspect && inspect.workspaceValue;
- const userValue = inspect && inspect.globalValue;
- const value = workspaceValue || userValue;
- if (value !== undefined) {
- if (preferenceName === 'workbench.colorTheme') {
- this.themeService.setCurrentTheme(value || this.themeService.defaultTheme.id);
- } else {
- this.iconThemes.current = value || this.iconThemes.default.id;
- }
- }
- }
-
protected handlePreferenceChange(e: PreferenceChangeEvent, app: FrontendApplication): void {
switch (e.preferenceName) {
case 'workbench.editor.highlightModifiedTabs': {
this.updateStyles();
break;
}
- case 'workbench.colorTheme':
- case 'workbench.iconTheme': {
- this.updateThemeFromPreference(e.preferenceName);
- break;
- }
case 'window.menuBarVisibility': {
const { newValue } = e;
const mainMenuId = 'main-menu';
@@ -554,6 +519,8 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
onStop(): void {
const recent = this.commandRegistry.recent;
this.storageService.setData<{ recent: Command[] }>(RECENT_COMMANDS_STORAGE_KEY, { recent });
+ window.localStorage.setItem(IconThemeService.STORAGE_KEY, this.iconThemes.current);
+ window.localStorage.setItem(ThemeService.STORAGE_KEY, this.themeService.getCurrentTheme().id);
}
protected initResourceContextKeys(): void {
@@ -971,6 +938,21 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
return open(this.openerService, untitledUri);
}
});
+ for (const [index, ordinal] of this.getOrdinalNumbers().entries()) {
+ commandRegistry.registerCommand({ id: `workbench.action.focus${ordinal}EditorGroup`, label: index === 0 ? nls.localizeByDefault('Focus First Editor Group') : '', category: nls.localize(CommonCommands.VIEW_CATEGORY_KEY, CommonCommands.VIEW_CATEGORY) }, {
+ isEnabled: () => this.shell.mainAreaTabBars.length > index,
+ execute: () => {
+ const widget = this.shell.mainAreaTabBars[index]?.currentTitle?.owner;
+ if (widget) {
+ this.shell.activateWidget(widget.id);
+ }
+ }
+ });
+ }
+ }
+
+ protected getOrdinalNumbers(): readonly string[] {
+ return ['First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth', 'Seventh', 'Eighth', 'Ninth'];
}
protected isElectron(): boolean {
@@ -1109,6 +1091,12 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
keybinding: this.isElectron() ? 'ctrlcmd+n' : 'alt+n',
}
);
+ for (const [index, ordinal] of this.getOrdinalNumbers().entries()) {
+ registry.registerKeybinding({
+ command: `workbench.action.focus${ordinal}EditorGroup`,
+ keybinding: `ctrlcmd+${(index + 1) % 10}`,
+ });
+ }
}
protected async save(options?: SaveOptions): Promise {
@@ -1173,10 +1161,16 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
}
protected selectIconTheme(): void {
- let resetTo: string | undefined = this.iconThemes.current;
- const previewTheme = debounce((id: string) => this.iconThemes.current = id, 200);
+ let resetTo: IconTheme | undefined = this.iconThemes.getCurrent();
+ const setTheme = (id: string, persist: boolean) => {
+ const theme = this.iconThemes.getDefinition(id);
+ if (theme) {
+ this.iconThemes.setCurrent(theme as IconTheme, persist);
+ }
+ };
+ const previewTheme = debounce(setTheme, 200);
- let items: Array = [];
+ let items: Array = [];
for (const iconTheme of this.iconThemes.definitions) {
items.push({
id: iconTheme.id,
@@ -1194,17 +1188,17 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
this.quickInputService?.showQuickPick(items,
{
placeholder: nls.localizeByDefault('Select File Icon Theme'),
- activeItem: items.find(item => item.id === resetTo),
- onDidChangeSelection: (quickPick: QuickPick, selectedItems: Array) => {
+ activeItem: items.find(item => item.id === resetTo?.id),
+ onDidChangeSelection: (_, selectedItems) => {
resetTo = undefined;
- previewTheme(selectedItems[0].id!);
+ setTheme(selectedItems[0].id, true);
},
- onDidChangeActive: (quickPick: QuickPick, activeItems: Array) => {
- previewTheme(activeItems[0].id!);
+ onDidChangeActive: (_, activeItems) => {
+ previewTheme(activeItems[0].id, false);
},
onDidHide: () => {
if (resetTo) {
- this.iconThemes.current = resetTo;
+ this.iconThemes.setCurrent(resetTo, false);
}
}
});
@@ -1212,9 +1206,10 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
protected selectColorTheme(): void {
let resetTo: string | undefined = this.themeService.getCurrentTheme().id;
- const previewTheme = debounce((id: string) => this.themeService.setCurrentTheme(id), 200);
-
- const itemsByTheme: { light: Array, dark: Array, hc: Array } = { light: [], dark: [], hc: [] };
+ const setTheme = (id: string, persist: boolean) => this.themeService.setCurrentTheme(id, persist);
+ const previewTheme = debounce(setTheme, 200);
+ type QuickPickWithId = QuickPickItem & { id: string };
+ const itemsByTheme: { light: Array, dark: Array, hc: Array } = { light: [], dark: [], hc: [] };
for (const theme of this.themeService.getThemes().sort((a, b) => a.label.localeCompare(b.label))) {
const themeItems: QuickPickItemOrSeparator[] = itemsByTheme[theme.type];
if (themeItems.length === 0) {
@@ -1233,19 +1228,17 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
this.quickInputService?.showQuickPick(items,
{
placeholder: nls.localizeByDefault('Select Color Theme (Up/Down Keys to Preview)'),
- activeItem: items.find((item: QuickPickItem) => item.id === resetTo),
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- onDidChangeSelection: (quickPick: any, selectedItems: Array) => {
+ activeItem: items.find(item => item.id === resetTo),
+ onDidChangeSelection: (_, selectedItems) => {
resetTo = undefined;
- previewTheme(selectedItems[0].id!);
+ setTheme(selectedItems[0].id, true);
},
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- onDidChangeActive: (quickPick: any, activeItems: Array) => {
- previewTheme(activeItems[0].id!);
+ onDidChangeActive: (_, activeItems) => {
+ previewTheme(activeItems[0].id, false);
},
onDidHide: () => {
if (resetTo) {
- this.themeService.setCurrentTheme(resetTo);
+ setTheme(resetTo, false);
}
}
});
diff --git a/packages/core/src/browser/decorations-service.ts b/packages/core/src/browser/decorations-service.ts
index f0c4b6c7228c7..723893dafb680 100644
--- a/packages/core/src/browser/decorations-service.ts
+++ b/packages/core/src/browser/decorations-service.ts
@@ -15,6 +15,7 @@
// *****************************************************************************
import { injectable } from 'inversify';
+import { isThenable } from '../common/promise-util';
import { CancellationToken, CancellationTokenSource, Disposable, Emitter, Event } from '../common';
import { TernarySearchTree } from '../common/ternary-search-tree';
import URI from '../common/uri';
@@ -157,12 +158,6 @@ class DecorationProviderWrapper {
this.data.set(uri, request);
return undefined;
}
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- function isThenable(obj: any): obj is Promise {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- return obj && typeof (>obj).then === 'function';
- }
}
private keepItem(uri: URI, data: Decoration | undefined): Decoration | undefined {
diff --git a/packages/core/src/browser/dialogs/react-dialog.tsx b/packages/core/src/browser/dialogs/react-dialog.tsx
index 0ab936c581d19..8cbc9b8f48e07 100644
--- a/packages/core/src/browser/dialogs/react-dialog.tsx
+++ b/packages/core/src/browser/dialogs/react-dialog.tsx
@@ -15,28 +15,27 @@
// *****************************************************************************
import * as React from 'react';
-import * as ReactDOM from 'react-dom';
import { injectable, inject } from 'inversify';
-import { Disposable, DisposableCollection } from '../../common';
+import { Disposable } from '../../common';
import { Message } from '../widgets';
import { AbstractDialog, DialogProps } from '../dialogs';
+import { createRoot, Root } from 'react-dom/client';
@injectable()
export abstract class ReactDialog extends AbstractDialog {
- protected readonly onRender = new DisposableCollection();
+ protected contentNodeRoot: Root;
constructor(
@inject(DialogProps) props: DialogProps
) {
super(props);
- this.toDispose.push(Disposable.create(() => {
- ReactDOM.unmountComponentAtNode(this.contentNode);
- }));
+ this.contentNodeRoot = createRoot(this.contentNode);
+ this.toDispose.push(Disposable.create(() => this.contentNodeRoot.unmount()));
}
protected override onUpdateRequest(msg: Message): void {
super.onUpdateRequest(msg);
- ReactDOM.render(<>{this.render()}>, this.contentNode, () => this.onRender.dispose());
+ this.contentNodeRoot.render(<>{this.render()}>);
}
/**
diff --git a/packages/core/src/browser/frontend-application.ts b/packages/core/src/browser/frontend-application.ts
index 10043a3165dfb..e25f02554ff81 100644
--- a/packages/core/src/browser/frontend-application.ts
+++ b/packages/core/src/browser/frontend-application.ts
@@ -26,6 +26,7 @@ import { preventNavigation, parseCssTime, animationFrame } from './browser';
import { CorePreferences } from './core-preferences';
import { WindowService } from './window/window-service';
import { TooltipService } from './tooltip-service';
+import { StopReason } from '../common/frontend-application-state';
/**
* Clients can implement to get a callback for contributing widgets to a shell on start.
@@ -81,11 +82,11 @@ export interface OnWillStopAction {
/**
* @resolves to a prepared value to be passed into the `action` function.
*/
- prepare?: () => MaybePromise;
+ prepare?: (stopReason?: StopReason) => MaybePromise;
/**
* @resolves to `true` if it is safe to close the application; `false` otherwise.
*/
- action: (prepared: T) => MaybePromise;
+ action: (prepared: T, stopReason?: StopReason) => MaybePromise;
/**
* A descriptive string for the reason preventing close.
*/
diff --git a/packages/core/src/browser/icon-theme-service.ts b/packages/core/src/browser/icon-theme-service.ts
index 5c870eaf04f0c..3c968fd808c3f 100644
--- a/packages/core/src/browser/icon-theme-service.ts
+++ b/packages/core/src/browser/icon-theme-service.ts
@@ -19,6 +19,9 @@ import { Emitter } from '../common/event';
import { Disposable, DisposableCollection } from '../common/disposable';
import { LabelProviderContribution, DidChangeLabelEvent } from './label-provider';
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
+import { PreferenceService } from './preferences';
+
+const ICON_THEME_PREFERENCE_KEY = 'workbench.iconTheme';
export interface IconThemeDefinition {
readonly id: string
@@ -74,7 +77,7 @@ export class NoneIconTheme implements IconTheme, LabelProviderContribution {
@injectable()
export class IconThemeService {
- protected static STORAGE_KEY = 'iconTheme';
+ static readonly STORAGE_KEY = 'iconTheme';
protected readonly onDidChangeEmitter = new Emitter();
readonly onDidChange = this.onDidChangeEmitter.event;
@@ -90,27 +93,28 @@ export class IconThemeService {
return this._iconThemes.get(id);
}
- @inject(NoneIconTheme)
- protected readonly noneIconTheme: NoneIconTheme;
+ @inject(NoneIconTheme) protected readonly noneIconTheme: NoneIconTheme;
+ @inject(PreferenceService) protected readonly preferences: PreferenceService;
protected readonly onDidChangeCurrentEmitter = new Emitter();
readonly onDidChangeCurrent = this.onDidChangeCurrentEmitter.event;
protected readonly toDeactivate = new DisposableCollection();
+ protected activeTheme: IconTheme;
+
@postConstruct()
protected init(): void {
- this.initDefaultTheme();
- this.register(this.noneIconTheme);
- }
-
- protected initDefaultTheme(): void {
- // If no theme is set yet, we store the desired default theme so it will be applied as soon as it is registered.
- // The registration may happen after preference initialization when contributed by a plugin.
- // If another theme is set by the user in the meantime, the local storage will be overridden anyway.
- if (!window.localStorage.getItem(IconThemeService.STORAGE_KEY) && FrontendApplicationConfigProvider.get().defaultIconTheme) {
- window.localStorage.setItem(IconThemeService.STORAGE_KEY, FrontendApplicationConfigProvider.get().defaultIconTheme);
- }
+ this.register(this.fallback);
+ this.setCurrent(this.fallback, false);
+ this.preferences.ready.then(() => {
+ this.validateActiveTheme();
+ this.preferences.onPreferencesChanged(changes => {
+ if (ICON_THEME_PREFERENCE_KEY in changes) {
+ this.validateActiveTheme();
+ }
+ });
+ });
}
register(iconTheme: IconTheme): Disposable {
@@ -120,10 +124,7 @@ export class IconThemeService {
}
this._iconThemes.set(iconTheme.id, iconTheme);
this.onDidChangeEmitter.fire(undefined);
- if (this.toDeactivate.disposed
- && window.localStorage.getItem(IconThemeService.STORAGE_KEY) === iconTheme.id) {
- this.setCurrent(iconTheme);
- }
+ this.validateActiveTheme();
return Disposable.create(() => this.unregister(iconTheme.id));
}
@@ -133,11 +134,10 @@ export class IconThemeService {
return undefined;
}
this._iconThemes.delete(id);
- if (window.localStorage.getItem(IconThemeService.STORAGE_KEY) === id) {
- window.localStorage.removeItem(IconThemeService.STORAGE_KEY);
- this.onDidChangeCurrentEmitter.fire(this.default.id);
- }
this.onDidChangeEmitter.fire(undefined);
+ if (id === this.getCurrent().id) {
+ this.setCurrent(this.default, false);
+ }
return iconTheme;
}
@@ -146,22 +146,43 @@ export class IconThemeService {
}
set current(id: string) {
- const newCurrent = this._iconThemes.get(id) || this.default;
- if (this.getCurrent().id !== newCurrent.id) {
+ const newCurrent = this._iconThemes.get(id);
+ if (newCurrent && this.getCurrent().id !== newCurrent.id) {
this.setCurrent(newCurrent);
}
}
- protected getCurrent(): IconTheme {
- const id = window.localStorage.getItem(IconThemeService.STORAGE_KEY);
- return id && this._iconThemes.get(id) || this.default;
+ getCurrent(): IconTheme {
+ return this.activeTheme;
+ }
+
+ /**
+ * @param persistSetting If `true`, the theme's id will be set as the value of the `workbench.iconTheme` preference. (default: `true`)
+ */
+ setCurrent(newCurrent: IconTheme, persistSetting = true): void {
+ if (newCurrent !== this.getCurrent()) {
+ this.toDeactivate.dispose();
+ this.toDeactivate.push(newCurrent.activate());
+ this.activeTheme = newCurrent;
+ this.onDidChangeCurrentEmitter.fire(newCurrent.id);
+ }
+ if (persistSetting) {
+ this.preferences.updateValue(ICON_THEME_PREFERENCE_KEY, newCurrent.id);
+ }
+ }
+
+ protected getConfiguredTheme(): IconTheme | undefined {
+ const configuredId = this.preferences.get(ICON_THEME_PREFERENCE_KEY);
+ return configuredId ? this._iconThemes.get(configuredId) : undefined;
}
- protected setCurrent(current: IconTheme): void {
- window.localStorage.setItem(IconThemeService.STORAGE_KEY, current.id);
- this.toDeactivate.dispose();
- this.toDeactivate.push(current.activate());
- this.onDidChangeCurrentEmitter.fire(current.id);
+ protected validateActiveTheme(): void {
+ if (this.preferences.isReady) {
+ const configured = this.getConfiguredTheme();
+ if (configured && configured !== this.getCurrent()) {
+ this.setCurrent(configured, false);
+ }
+ }
}
get default(): IconTheme {
@@ -171,9 +192,4 @@ export class IconThemeService {
get fallback(): IconTheme {
return this.noneIconTheme;
}
-
- protected load(): string | undefined {
- return window.localStorage.getItem(IconThemeService.STORAGE_KEY) || undefined;
- }
-
}
diff --git a/packages/core/src/browser/label-provider.ts b/packages/core/src/browser/label-provider.ts
index b862149f26f47..565246692fc11 100644
--- a/packages/core/src/browser/label-provider.ts
+++ b/packages/core/src/browser/label-provider.ts
@@ -93,9 +93,8 @@ export interface URIIconReference {
uri?: URI
}
export namespace URIIconReference {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function is(element: any | undefined): element is URIIconReference {
- return !!element && typeof element === 'object' && 'kind' in element && element['kind'] === 'uriIconReference';
+ export function is(element: unknown): element is URIIconReference {
+ return !!element && typeof element === 'object' && 'kind' in element && (element as URIIconReference).kind === 'uriIconReference';
}
export function create(id: URIIconReference['id'], uri?: URI): URIIconReference {
return { kind: 'uriIconReference', id, uri };
diff --git a/packages/core/src/browser/menu/browser-context-menu-renderer.ts b/packages/core/src/browser/menu/browser-context-menu-renderer.ts
index 469c08bc69408..ce155e75f9c88 100644
--- a/packages/core/src/browser/menu/browser-context-menu-renderer.ts
+++ b/packages/core/src/browser/menu/browser-context-menu-renderer.ts
@@ -14,8 +14,6 @@
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
// *****************************************************************************
-/* eslint-disable @typescript-eslint/no-explicit-any */
-
import { inject, injectable } from 'inversify';
import { Menu } from '../widgets';
import { ContextMenuAccess, ContextMenuRenderer, coordinateFromAnchor, RenderContextMenuOptions } from '../context-menu-renderer';
diff --git a/packages/core/src/browser/menu/browser-menu-plugin.ts b/packages/core/src/browser/menu/browser-menu-plugin.ts
index 6ebac56e784da..614d61983c172 100644
--- a/packages/core/src/browser/menu/browser-menu-plugin.ts
+++ b/packages/core/src/browser/menu/browser-menu-plugin.ts
@@ -285,8 +285,6 @@ export class DynamicMenuWidget extends MenuWidget {
}
}
- protected buildSubmenusCalled = 0;
-
protected buildSubMenus(parentItems: MenuWidget.IItemOptions[], menu: MenuNode, commands: MenuCommandRegistry): MenuWidget.IItemOptions[] {
if (CompoundMenuNode.is(menu) && menu.children.length && this.undefinedOrMatch(menu.when, this.options.context)) {
const role = menu === this.menu ? CompoundMenuNodeRole.Group : CompoundMenuNode.getRole(menu);
diff --git a/packages/core/src/browser/navigatable-types.ts b/packages/core/src/browser/navigatable-types.ts
index 370868afc73fb..a52f39491d139 100644
--- a/packages/core/src/browser/navigatable-types.ts
+++ b/packages/core/src/browser/navigatable-types.ts
@@ -33,14 +33,14 @@ export interface Navigatable {
}
export namespace Navigatable {
- export function is(arg: Object | undefined): arg is Navigatable {
- return !!arg && 'getResourceUri' in arg && 'createMoveToUri' in arg;
+ export function is(arg: unknown): arg is Navigatable {
+ return !!arg && typeof arg === 'object' && 'getResourceUri' in arg && 'createMoveToUri' in arg;
}
}
export type NavigatableWidget = BaseWidget & Navigatable;
export namespace NavigatableWidget {
- export function is(arg: Object | undefined): arg is NavigatableWidget {
+ export function is(arg: unknown): arg is NavigatableWidget {
return arg instanceof BaseWidget && Navigatable.is(arg);
}
export function* getAffected(
@@ -76,8 +76,7 @@ export interface NavigatableWidgetOptions {
counter?: number,
}
export namespace NavigatableWidgetOptions {
- export function is(arg: Object | undefined): arg is NavigatableWidgetOptions {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- return !!arg && 'kind' in arg && (arg as any).kind === 'navigatable';
+ export function is(arg: unknown): arg is NavigatableWidgetOptions {
+ return !!arg && typeof arg === 'object' && 'kind' in arg && (arg as NavigatableWidgetOptions).kind === 'navigatable';
}
}
diff --git a/packages/core/src/browser/preferences/injectable-preference-proxy.ts b/packages/core/src/browser/preferences/injectable-preference-proxy.ts
index b57ce36feca95..b5addbf63c613 100644
--- a/packages/core/src/browser/preferences/injectable-preference-proxy.ts
+++ b/packages/core/src/browser/preferences/injectable-preference-proxy.ts
@@ -108,7 +108,7 @@ export class InjectablePreferenceProxy> impl
if (this.schema && (this.isFlat || !property.includes('.')) && this.schema.properties[preferenceName]) {
const { overrideIdentifier } = this;
const toGet = overrideIdentifier ? this.preferences.overridePreferenceName({ overrideIdentifier, preferenceName }) : preferenceName;
- return this.getValue(toGet as keyof T & string, undefined as any); // eslint-disable-line @typescript-eslint/no-explicit-any
+ return this.getValue(toGet as keyof T & string, undefined!);
}
switch (property) {
case 'onPreferenceChanged':
diff --git a/packages/core/src/browser/preferences/preference-language-override-service.ts b/packages/core/src/browser/preferences/preference-language-override-service.ts
index 8a54239ddb22b..37a3cfddd1c58 100644
--- a/packages/core/src/browser/preferences/preference-language-override-service.ts
+++ b/packages/core/src/browser/preferences/preference-language-override-service.ts
@@ -23,8 +23,7 @@ export interface OverridePreferenceName {
overrideIdentifier: string
}
export namespace OverridePreferenceName {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function is(arg: any): arg is OverridePreferenceName {
+ export function is(arg: unknown): arg is OverridePreferenceName {
return !!arg && typeof arg === 'object' && 'preferenceName' in arg && 'overrideIdentifier' in arg;
}
}
@@ -37,8 +36,7 @@ export const getOverridePattern = (identifier: string) => `\\[(${identifier})\\]
export class PreferenceLanguageOverrideService {
protected readonly overrideIdentifiers = new Set();
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- testOverrideValue(name: string, value: any): value is PreferenceSchemaProperties {
+ testOverrideValue(name: string, value: unknown): value is PreferenceSchemaProperties {
return PreferenceSchemaProperties.is(value) && OVERRIDE_PROPERTY_PATTERN.test(name);
}
diff --git a/packages/core/src/browser/preferences/preference-service.ts b/packages/core/src/browser/preferences/preference-service.ts
index 8395c2b912c9c..87252057bfc13 100644
--- a/packages/core/src/browser/preferences/preference-service.ts
+++ b/packages/core/src/browser/preferences/preference-service.ts
@@ -91,6 +91,10 @@ export interface PreferenceService extends Disposable {
* Promise indicating whether the service successfully initialized.
*/
readonly ready: Promise;
+ /**
+ * Indicates whether the service has successfully initialized. Will be `true` when {@link PreferenceService.ready the `ready` Promise} resolves.
+ */
+ readonly isReady: boolean;
/**
* Retrieve the stored value for the given preference.
*
@@ -171,10 +175,18 @@ export interface PreferenceService extends Disposable {
*
* @param preferenceName the preference identifier.
* @param resourceUri the uri of the resource for which the preference is stored.
+ * @param forceLanguageOverride if `true` and `preferenceName` is a language override, only values for the specified override will be returned.
+ * Otherwise, values for the override will be returned where defined, and values from the base preference will be returned otherwise.
*
* @return an object containing the value of the given preference for all scopes.
*/
- inspect(preferenceName: string, resourceUri?: string): PreferenceInspection | undefined;
+ inspect(preferenceName: string, resourceUri?: string, forceLanguageOverride?: boolean): PreferenceInspection | undefined;
+ /**
+ * For behavior, see {@link PreferenceService.inspect}.
+ *
+ * @returns the value in the scope specified.
+ */
+ inspectInScope(preferenceName: string, scope: PreferenceScope, resourceUri?: string, forceLanguageOverride?: boolean): T | undefined
/**
* Returns a new preference identifier based on the given OverridePreferenceName.
*
@@ -298,6 +310,7 @@ export class PreferenceServiceImpl implements PreferenceService {
await provider.ready;
}
this._ready.resolve();
+ this._isReady = true;
} catch (e) {
this._ready.reject(e);
}
@@ -318,6 +331,11 @@ export class PreferenceServiceImpl implements PreferenceService {
return this._ready.promise;
}
+ protected _isReady = false;
+ get isReady(): boolean {
+ return this._isReady;
+ }
+
protected reconcilePreferences(changes: PreferenceProviderDataChanges): void {
const changesToEmit: PreferenceChanges = {};
const acceptChange = (change: PreferenceProviderDataChange) =>
@@ -459,20 +477,20 @@ export class PreferenceServiceImpl implements PreferenceService {
return Number(value);
}
- inspect(preferenceName: string, resourceUri?: string): PreferenceInspection | undefined {
- const defaultValue = this.inspectInScope(preferenceName, PreferenceScope.Default, resourceUri);
- const globalValue = this.inspectInScope(preferenceName, PreferenceScope.User, resourceUri);
- const workspaceValue = this.inspectInScope(preferenceName, PreferenceScope.Workspace, resourceUri);
- const workspaceFolderValue = this.inspectInScope(preferenceName, PreferenceScope.Folder, resourceUri);
+ inspect(preferenceName: string, resourceUri?: string, forceLanguageOverride?: boolean): PreferenceInspection | undefined {
+ const defaultValue = this.inspectInScope(preferenceName, PreferenceScope.Default, resourceUri, forceLanguageOverride);
+ const globalValue = this.inspectInScope(preferenceName, PreferenceScope.User, resourceUri, forceLanguageOverride);
+ const workspaceValue = this.inspectInScope(preferenceName, PreferenceScope.Workspace, resourceUri, forceLanguageOverride);
+ const workspaceFolderValue = this.inspectInScope(preferenceName, PreferenceScope.Folder, resourceUri, forceLanguageOverride);
const valueApplied = workspaceFolderValue ?? workspaceValue ?? globalValue ?? defaultValue;
return { preferenceName, defaultValue, globalValue, workspaceValue, workspaceFolderValue, value: valueApplied };
}
- protected inspectInScope(preferenceName: string, scope: PreferenceScope, resourceUri?: string): T | undefined {
+ inspectInScope(preferenceName: string, scope: PreferenceScope, resourceUri?: string, forceLanguageOverride?: boolean): T | undefined {
const value = this.doInspectInScope(preferenceName, scope, resourceUri);
- if (value === undefined) {
+ if (value === undefined && !forceLanguageOverride) {
const overridden = this.overriddenPreferenceName(preferenceName);
if (overridden) {
return this.doInspectInScope(overridden.preferenceName, scope, resourceUri);
diff --git a/packages/core/src/browser/preferences/test/mock-preference-service.ts b/packages/core/src/browser/preferences/test/mock-preference-service.ts
index 67b8d199b081d..8db48b6cdc3d9 100644
--- a/packages/core/src/browser/preferences/test/mock-preference-service.ts
+++ b/packages/core/src/browser/preferences/test/mock-preference-service.ts
@@ -40,10 +40,14 @@ export class MockPreferenceService implements PreferenceService {
inspect(preferenceName: string, resourceUri?: string): PreferenceInspection | undefined {
return undefined;
}
+ inspectInScope(preferenceName: string, scope: PreferenceScope, resourceUri?: string, forceLanguageOverride?: boolean): T | undefined {
+ return undefined;
+ }
// eslint-disable-next-line @typescript-eslint/no-explicit-any
set(preferenceName: string, value: any): Promise { return Promise.resolve(); }
updateValue(): Promise { return Promise.resolve(); }
- ready: Promise = Promise.resolve();
+ readonly ready: Promise = Promise.resolve();
+ readonly isReady = true;
readonly onPreferenceChanged: Event = new Emitter().event;
readonly onPreferencesChanged: Event = new Emitter().event;
overridePreferenceName(options: OverridePreferenceName): string {
diff --git a/packages/core/src/browser/saveable.ts b/packages/core/src/browser/saveable.ts
index ed6759860dbd0..06f5571c18140 100644
--- a/packages/core/src/browser/saveable.ts
+++ b/packages/core/src/browser/saveable.ts
@@ -59,16 +59,13 @@ export namespace Saveable {
}
export type Snapshot = { value: string } | { read(): string | null };
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function isSource(arg: any): arg is SaveableSource {
- return !!arg && ('saveable' in arg) && is(arg.saveable);
+ export function isSource(arg: unknown): arg is SaveableSource {
+ return typeof arg === 'object' && !!arg && is((arg as SaveableSource).saveable);
}
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function is(arg: any): arg is Saveable {
- return !!arg && ('dirty' in arg) && ('onDirtyChanged' in arg);
+ export function is(arg: unknown): arg is Saveable {
+ return typeof arg === 'object' && !!arg && 'dirty' in arg && 'onDirtyChanged' in arg;
}
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function get(arg: any): Saveable | undefined {
+ export function get(arg: unknown): Saveable | undefined {
if (is(arg)) {
return arg;
}
@@ -77,20 +74,17 @@ export namespace Saveable {
}
return undefined;
}
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function getDirty(arg: any): Saveable | undefined {
+ export function getDirty(arg: unknown): Saveable | undefined {
const saveable = get(arg);
if (saveable && saveable.dirty) {
return saveable;
}
return undefined;
}
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function isDirty(arg: any): boolean {
+ export function isDirty(arg: unknown): boolean {
return !!getDirty(arg);
}
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export async function save(arg: any, options?: SaveOptions): Promise {
+ export async function save(arg: unknown, options?: SaveOptions): Promise {
const saveable = get(arg);
if (saveable) {
await saveable.save(options);
@@ -229,7 +223,7 @@ export namespace SaveableWidget {
return !!widget && 'closeWithoutSaving' in widget;
}
export function getDirty(widgets: Iterable): IterableIterator {
- return get(widgets, Saveable.isDirty);
+ return get(widgets, Saveable.isDirty);
}
export function* get(
widgets: Iterable,
diff --git a/packages/core/src/browser/shell/application-shell.ts b/packages/core/src/browser/shell/application-shell.ts
index 94d36e3dd28f6..51b9ffd830576 100644
--- a/packages/core/src/browser/shell/application-shell.ts
+++ b/packages/core/src/browser/shell/application-shell.ts
@@ -1934,10 +1934,9 @@ export namespace ApplicationShell {
return area === 'left' || area === 'right' || area === 'bottom';
}
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function isValidArea(area?: any): area is ApplicationShell.Area {
+ export function isValidArea(area?: unknown): area is ApplicationShell.Area {
const areas = ['main', 'top', 'left', 'right', 'bottom'];
- return (area !== undefined && typeof area === 'string' && areas.includes(area));
+ return typeof area === 'string' && areas.includes(area);
}
/**
@@ -1981,8 +1980,8 @@ export namespace ApplicationShell {
* Whether a widget should be opened to the side tab bar relatively to the reference widget.
*/
export type OpenToSideMode = 'open-to-left' | 'open-to-right';
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function isOpenToSideMode(mode: OpenToSideMode | any): mode is OpenToSideMode {
+
+ export function isOpenToSideMode(mode: unknown): mode is OpenToSideMode {
return mode === 'open-to-left' || mode === 'open-to-right';
}
@@ -2060,8 +2059,8 @@ export namespace ApplicationShell {
}
export namespace TrackableWidgetProvider {
- export function is(widget: object | undefined): widget is TrackableWidgetProvider {
- return !!widget && 'getTrackableWidgets' in widget;
+ export function is(widget: unknown): widget is TrackableWidgetProvider {
+ return !!widget && typeof widget === 'object' && 'getTrackableWidgets' in widget;
}
}
diff --git a/packages/core/src/browser/shell/shell-layout-restorer.ts b/packages/core/src/browser/shell/shell-layout-restorer.ts
index 6af5dd643c203..ac7f680ff70fe 100644
--- a/packages/core/src/browser/shell/shell-layout-restorer.ts
+++ b/packages/core/src/browser/shell/shell-layout-restorer.ts
@@ -27,6 +27,7 @@ import { MaybePromise } from '../../common/types';
import { ApplicationShell, applicationShellLayoutVersion, ApplicationShellLayoutVersion } from './application-shell';
import { CommonCommands } from '../common-frontend-contribution';
import { WindowService } from '../window/window-service';
+import { StopReason } from '../../common/frontend-application-state';
/**
* A contract for widgets that want to store and restore their inner state, between sessions.
@@ -45,9 +46,8 @@ export interface StatefulWidget {
}
export namespace StatefulWidget {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function is(arg: any): arg is StatefulWidget {
- return arg !== undefined && typeof arg['storeState'] === 'function' && typeof arg['restoreState'] === 'function';
+ export function is(arg: unknown): arg is StatefulWidget {
+ return !!arg && typeof arg === 'object' && typeof (arg as StatefulWidget).storeState === 'function' && typeof (arg as StatefulWidget).restoreState === 'function';
}
}
@@ -139,7 +139,7 @@ export class ShellLayoutRestorer implements CommandContribution {
}
protected async resetLayout(): Promise {
- if (await this.windowService.isSafeToShutDown()) {
+ if (await this.windowService.isSafeToShutDown(StopReason.Reload)) {
this.logger.info('>>> Resetting layout...');
this.shouldStoreLayout = false;
this.storageService.setData(this.storageKey, undefined);
diff --git a/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts b/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts
index 3a4ebc623d87b..acf15dd917bbc 100644
--- a/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts
+++ b/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts
@@ -171,9 +171,8 @@ export namespace TabBarToolbarItem {
return (left.priority || 0) - (right.priority || 0);
};
- export function is(arg: Object | undefined): arg is TabBarToolbarItem {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- return !!arg && 'command' in arg && typeof (arg as any).command === 'string';
+ export function is(arg: unknown): arg is TabBarToolbarItem {
+ return !!arg && typeof arg === 'object' && 'command' in arg && typeof (arg as TabBarToolbarItem).command === 'string';
}
}
diff --git a/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx b/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx
index 2c16235bf7a0d..7776842ebf958 100644
--- a/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx
+++ b/packages/core/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx
@@ -52,8 +52,11 @@ export class TabBarToolbar extends ReactWidget {
super();
this.addClass(TabBarToolbar.Styles.TAB_BAR_TOOLBAR);
this.hide();
+ this.onRender = this.onRender.bind(this);
}
+ protected onRender = () => this.show();
+
updateItems(items: Array, current: Widget | undefined): void {
this.inline.clear();
this.more.clear();
@@ -68,11 +71,6 @@ export class TabBarToolbar extends ReactWidget {
if (!items.length) {
this.hide();
}
- this.onRender.push(Disposable.create(() => {
- if (items.length) {
- this.show();
- }
- }));
this.update();
}
@@ -129,6 +127,7 @@ export class TabBarToolbar extends ReactWidget {
const toolbarItemClassNames = this.getToolbarItemClassNames(command?.id ?? item.command);
if (item.menuPath && !item.command) { toolbarItemClassNames.push('enabled'); }
return