Keep Theia config out of home dotfolder

This commit is contained in:
2026-05-10 23:04:48 +00:00
parent 7de42e10df
commit 1ccf2fb1cf
16 changed files with 101 additions and 9 deletions
@@ -3,12 +3,14 @@ import { CommonMenus } from '@theia/core/lib/browser/common-menus.js';
import { CommandContribution, CommandRegistry } from '@theia/core/lib/common/command.js';
import { MenuContribution, MenuModelRegistry } from '@theia/core/lib/common/menu/menu-model-registry.js';
import { MessageService } from '@theia/core/lib/common/message-service.js';
import { PreferenceConfigurations } from '@theia/core/lib/common/preferences/preference-configurations.js';
import { ContainerModule, inject, injectable } from '@theia/core/shared/inversify/index.js';
import {
GitZoneRemoteServer,
gitZoneRemotePath,
type IGitZoneRemoteServer,
} from '../common/gitzone-remote-protocol.js';
import { GitZonePreferenceConfigurations } from '../common/gitzone-preference-configurations.js';
export const GitZoneRemoteEnvironmentCommand = {
id: 'gitzone.remote.environment',
@@ -40,7 +42,9 @@ export class GitZoneRemoteContribution implements CommandContribution, MenuContr
}
}
export default new ContainerModule((bind) => {
export default new ContainerModule((bind, _unbind, isBound, rebind) => {
const preferenceBinding = isBound(PreferenceConfigurations) ? rebind(PreferenceConfigurations) : bind(PreferenceConfigurations);
preferenceBinding.to(GitZonePreferenceConfigurations).inSingletonScope();
bind(GitZoneRemoteServer)
.toDynamicValue((context) =>
context.container
@@ -0,0 +1,11 @@
import { PreferenceConfigurations } from '@theia/core/lib/common/preferences/preference-configurations.js';
import { injectable } from '@theia/core/shared/inversify/index.js';
export const gitZoneWorkspacePreferenceFolder = '.git.zone/ide/workspace';
@injectable()
export class GitZonePreferenceConfigurations extends PreferenceConfigurations {
getPaths(): string[] {
return [gitZoneWorkspacePreferenceFolder, '.vscode'];
}
}
@@ -1,6 +1,8 @@
import { ConnectionHandler } from '@theia/core/lib/common/messaging/handler.js';
import { RpcConnectionHandler } from '@theia/core/lib/common/messaging/proxy-factory.js';
import { PreferenceConfigurations } from '@theia/core/lib/common/preferences/preference-configurations.js';
import { ContainerModule } from '@theia/core/shared/inversify/index.js';
import { GitZonePreferenceConfigurations } from '../common/gitzone-preference-configurations.js';
import {
GitZoneRemoteServer,
gitZoneRemotePath,
@@ -8,7 +10,9 @@ import {
} from '../common/gitzone-remote-protocol.js';
import { GitZoneRemoteNodeService } from './gitzone-remote-node-service.js';
export default new ContainerModule((bind) => {
export default new ContainerModule((bind, _unbind, isBound, rebind) => {
const preferenceBinding = isBound(PreferenceConfigurations) ? rebind(PreferenceConfigurations) : bind(PreferenceConfigurations);
preferenceBinding.to(GitZonePreferenceConfigurations).inSingletonScope();
bind(GitZoneRemoteNodeService).toSelf().inSingletonScope();
bind(GitZoneRemoteServer).toService(GitZoneRemoteNodeService);
bind(ConnectionHandler)