diff --git a/src/vs/platform/void/browser/void.contribution.ts b/src/vs/platform/void/browser/void.contribution.ts
new file mode 100644
index 00000000..5209680d
--- /dev/null
+++ b/src/vs/platform/void/browser/void.contribution.ts
@@ -0,0 +1,15 @@
+
+
+// ---------- common ----------
+
+// llmMessage
+import '../common/llmMessageService.js'
+
+// voidConfig
+import '../common/voidConfigService.js'
+
+// refreshModel
+import '../common/refreshModelService.js'
+
+// metrics
+import '../common/metricsService.js'
diff --git a/src/vs/platform/void/common/void.contribution.ts b/src/vs/platform/void/common/void.contribution.ts
deleted file mode 100644
index 2e12fb9c..00000000
--- a/src/vs/platform/void/common/void.contribution.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-// llmMessage
-import './llmMessageService.js'
-
-// voidConfig
-import './voidConfigService.js'
-
-// refreshModel
-import './refreshModelService.js'
-
-// metrics
-import './metricsService.js'
diff --git a/src/vs/workbench/contrib/void/browser/findDiffs.ts b/src/vs/workbench/contrib/void/browser/findDiffs.ts
index 32b893e4..60643e32 100644
--- a/src/vs/workbench/contrib/void/browser/findDiffs.ts
+++ b/src/vs/workbench/contrib/void/browser/findDiffs.ts
@@ -3,7 +3,7 @@
* Void Editor additions licensed under the AGPL 3.0 License.
*--------------------------------------------------------------------------------------------*/
-import { diffLines } from './react/out/util/diffLines.js'
+import { diffLines } from './react/out/diff/index.js'
export type ComputedDiff = {
type: 'edit';
diff --git a/src/vs/workbench/contrib/void/browser/react/src/util/diffLines.tsx b/src/vs/workbench/contrib/void/browser/react/src/diff/index.tsx
similarity index 100%
rename from src/vs/workbench/contrib/void/browser/react/src/util/diffLines.tsx
rename to src/vs/workbench/contrib/void/browser/react/src/diff/index.tsx
diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/Sidebar.tsx b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/Sidebar.tsx
index d605e2d8..e4714679 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/Sidebar.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/Sidebar.tsx
@@ -15,11 +15,11 @@ import { useSidebarState } from '../util/services.js';
import '../styles.css'
import { SidebarThreadSelector } from './SidebarThreadSelector.js';
import { SidebarChat } from './SidebarChat.js';
-import { ModelSelectionSettings } from './ModelSelectionSettings.js';
-import { VoidProviderSettings } from './VoidProviderSettings.js';
+import { ModelSelectionSettings } from '../void-settings-tsx/ModelSelectionSettings.js';
+import { VoidProviderSettings } from '../void-settings-tsx/VoidProviderSettings.js';
import ErrorBoundary from './ErrorBoundary.js';
-const Sidebar = () => {
+export const Sidebar = () => {
const sidebarState = useSidebarState()
const { isHistoryOpen, currentTab: tab } = sidebarState
@@ -43,16 +43,6 @@ const Sidebar = () => {
-
-
-
-
-
-
-
-
-
-
@@ -61,7 +51,3 @@ const Sidebar = () => {
}
-
-const mountFn = mountFnGenerator(Sidebar)
-export default mountFn
-
diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx
index f45c0e9c..13ee1b6c 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/SidebarChat.tsx
@@ -22,7 +22,7 @@ import { OnError, ServiceSendLLMMessageParams } from '../../../../../../../platf
import { getCmdKey } from '../../../getCmdKey.js'
import { HistoryInputBox, InputBox } from '../../../../../../../base/browser/ui/inputbox/inputBox.js';
import { VoidInputBox } from './inputs.js';
-import { ModelSelectionOfFeature } from './ModelSelectionSettings.js';
+import { ModelSelectionOfFeature } from '../void-settings-tsx/ModelSelectionSettings.js';
const IconX = ({ size, className = '' }: { size: number, className?: string }) => {
@@ -202,7 +202,7 @@ const ChatBubble = ({ chatMessage }: {
}
return
-
diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/index.tsx b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/index.tsx
new file mode 100644
index 00000000..a174f0ad
--- /dev/null
+++ b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/index.tsx
@@ -0,0 +1,6 @@
+import { mountFnGenerator } from '../util/mountFnGenerator.js'
+import { Sidebar } from './Sidebar.js'
+
+export const mountSidebar = mountFnGenerator(Sidebar)
+
+
diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/inputs.tsx b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/inputs.tsx
index 896762fe..017ed131 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/inputs.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/inputs.tsx
@@ -5,9 +5,9 @@
import React, { useCallback, useEffect, useRef } from 'react';
import { useService } from '../util/services.js';
-import { HistoryInputBox, InputBox } from '../../../../../../../base/browser/ui/inputbox/inputBox.js';
-import { defaultCheckboxStyles, defaultInputBoxStyles, defaultSelectBoxStyles, defaultToggleStyles } from '../../../../../../../platform/theme/browser/defaultStyles.js';
-import { SelectBox, unthemedSelectBoxStyles } from '../../../../../../../base/browser/ui/selectBox/selectBox.js';
+import { InputBox } from '../../../../../../../base/browser/ui/inputbox/inputBox.js';
+import { defaultInputBoxStyles, defaultSelectBoxStyles } from '../../../../../../../platform/theme/browser/defaultStyles.js';
+import { SelectBox } from '../../../../../../../base/browser/ui/selectBox/selectBox.js';
import { IDisposable } from '../../../../../../../base/common/lifecycle.js';
@@ -125,7 +125,7 @@ export const VoidSelectBox =
({ onChangeSelection, onCreateInstance, selectB
instance.render(containerRef.current)
disposables.push(
- instance.onDidSelect(e => { onChangeSelection(options[e.index].value ); })
+ instance.onDidSelect(e => { onChangeSelection(options[e.index].value); })
)
if (onCreateInstance) {
diff --git a/src/vs/workbench/contrib/void/browser/react/src/util/mountFnGenerator.tsx b/src/vs/workbench/contrib/void/browser/react/src/util/mountFnGenerator.tsx
index d6b24f8c..56524b60 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/util/mountFnGenerator.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/util/mountFnGenerator.tsx
@@ -5,8 +5,8 @@
import React, { useEffect, useState } from 'react';
import * as ReactDOM from 'react-dom/client'
-import { ReactServicesType, VoidSidebarState } from '../../../registerSidebar.js';
import { _registerServices } from './services.js';
+import { ReactServicesType } from '../../../reactServices.js';
export const mountFnGenerator = (Component: React.FC) => (rootElement: HTMLElement, services: ReactServicesType) => {
diff --git a/src/vs/workbench/contrib/void/browser/react/src/util/services.tsx b/src/vs/workbench/contrib/void/browser/react/src/util/services.tsx
index 975f5be6..25fb80f3 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/util/services.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/util/services.tsx
@@ -4,11 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import { useState, useEffect } from 'react'
-import { VoidSidebarState, ReactServicesType } from '../../../registerSidebar.js'
+import { VoidSidebarState } from '../../../registerSidebar.js'
import { ThreadsState } from '../../../registerThreads.js'
import { SettingsOfProvider } from '../../../../../../../platform/void/common/voidConfigTypes.js'
import { RefreshModelState } from '../../../../../../../platform/void/common/refreshModelService.js'
import { IDisposable } from '../../../../../../../base/common/lifecycle.js'
+import { ReactServicesType } from '../../../reactServices.js'
// normally to do this you'd use a useEffect that calls .onDidChangeState(), but useEffect mounts too late and misses initial state changes
diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/ModelSelectionSettings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/ModelSelectionSettings.tsx
similarity index 98%
rename from src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/ModelSelectionSettings.tsx
rename to src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/ModelSelectionSettings.tsx
index c7f61fdf..e13f0aea 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/ModelSelectionSettings.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/ModelSelectionSettings.tsx
@@ -7,7 +7,7 @@ import { useCallback, useEffect, useRef, useState } from 'react'
import { FeatureName, featureNames, ProviderName, providerNames } from '../../../../../../../platform/void/common/voidConfigTypes.js'
import { dummyModelData } from '../../../../../../../platform/void/common/voidConfigModelDefaults.js'
import { useConfigState, useRefreshModelState, useService } from '../util/services.js'
-import { VoidSelectBox } from './inputs.js'
+import { VoidSelectBox } from '../sidebar-tsx/inputs.js'
import { SelectBox } from '../../../../../../../base/browser/ui/selectBox/selectBox.js'
diff --git a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/VoidProviderSettings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/VoidProviderSettings.tsx
similarity index 96%
rename from src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/VoidProviderSettings.tsx
rename to src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/VoidProviderSettings.tsx
index f85cc74e..33a1b95c 100644
--- a/src/vs/workbench/contrib/void/browser/react/src/sidebar-tsx/VoidProviderSettings.tsx
+++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/VoidProviderSettings.tsx
@@ -5,10 +5,10 @@
import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'
import { titleOfProviderName, displayInfoOfSettingName, ProviderName, providerNames, featureNames, SettingsOfProvider, SettingName, defaultVoidProviderState } from '../../../../../../../platform/void/common/voidConfigTypes.js'
-import { VoidInputBox } from './inputs.js'
+import { VoidInputBox } from '../sidebar-tsx/inputs.js'
import { useConfigState, useService } from '../util/services.js'
import { InputBox } from '../../../../../../../base/browser/ui/inputbox/inputBox.js'
-import ErrorBoundary from './ErrorBoundary.js'
+import ErrorBoundary from '../sidebar-tsx/ErrorBoundary.js'
const Setting = ({ providerName, settingName }: { providerName: ProviderName, settingName: SettingName }) => {
diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/VoidSettings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/VoidSettings.tsx
new file mode 100644
index 00000000..ecf60499
--- /dev/null
+++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/VoidSettings.tsx
@@ -0,0 +1,13 @@
+import ErrorBoundary from '../sidebar-tsx/ErrorBoundary.js'
+import { VoidProviderSettings } from './VoidProviderSettings.js'
+
+
+export const VoidSettings = () => {
+ return <>
+
+
+
+ >
+}
+
+
diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/index.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/index.tsx
new file mode 100644
index 00000000..ee89ffab
--- /dev/null
+++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/index.tsx
@@ -0,0 +1,6 @@
+import { mountFnGenerator } from '../util/mountFnGenerator.js'
+import { VoidSettings } from './VoidSettings.js'
+
+export const mountVoidSettings = mountFnGenerator(VoidSettings)
+
+
diff --git a/src/vs/workbench/contrib/void/browser/react/tsup.config.js b/src/vs/workbench/contrib/void/browser/react/tsup.config.js
index c190a71e..5e0df9c0 100644
--- a/src/vs/workbench/contrib/void/browser/react/tsup.config.js
+++ b/src/vs/workbench/contrib/void/browser/react/tsup.config.js
@@ -7,8 +7,9 @@ import { defineConfig } from 'tsup'
export default defineConfig({
entry: [
- './src2/sidebar-tsx/Sidebar.tsx',
- './src2/util/diffLines.tsx',
+ './src2/sidebar-tsx/index.tsx',
+ './src2/void-settings-tsx/index.tsx',
+ './src2/diff/index.tsx',
],
outDir: './out',
format: ['esm'],
diff --git a/src/vs/workbench/contrib/void/browser/reactServices.ts b/src/vs/workbench/contrib/void/browser/reactServices.ts
new file mode 100644
index 00000000..e465ca93
--- /dev/null
+++ b/src/vs/workbench/contrib/void/browser/reactServices.ts
@@ -0,0 +1,51 @@
+import { ServicesAccessor } from '../../../../editor/browser/editorExtensions.js';
+import { IModelService } from '../../../../editor/common/services/model.js';
+import { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';
+import { IContextViewService, IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';
+import { IFileService } from '../../../../platform/files/common/files.js';
+import { IHoverService } from '../../../../platform/hover/browser/hover.js';
+import { IThemeService } from '../../../../platform/theme/common/themeService.js';
+import { ILLMMessageService } from '../../../../platform/void/common/llmMessageService.js';
+import { IRefreshModelService } from '../../../../platform/void/common/refreshModelService.js';
+import { IVoidConfigStateService } from '../../../../platform/void/common/voidConfigService.js';
+import { IInlineDiffsService } from './registerInlineDiffs.js';
+import { IVoidSidebarStateService } from './registerSidebar.js';
+import { IThreadHistoryService } from './registerThreads.js';
+
+export type ReactServicesType = {
+ sidebarStateService: IVoidSidebarStateService;
+ configStateService: IVoidConfigStateService;
+ threadsStateService: IThreadHistoryService;
+ fileService: IFileService;
+ modelService: IModelService;
+ inlineDiffService: IInlineDiffsService;
+ llmMessageService: ILLMMessageService;
+ clipboardService: IClipboardService;
+ refreshModelService: IRefreshModelService;
+
+ themeService: IThemeService,
+ hoverService: IHoverService,
+
+ contextViewService: IContextViewService;
+ contextMenuService: IContextMenuService;
+}
+
+
+export const getReactServices = (accessor: ServicesAccessor): ReactServicesType => {
+ return {
+ configStateService: accessor.get(IVoidConfigStateService),
+ sidebarStateService: accessor.get(IVoidSidebarStateService),
+ threadsStateService: accessor.get(IThreadHistoryService),
+ fileService: accessor.get(IFileService),
+ modelService: accessor.get(IModelService),
+ inlineDiffService: accessor.get(IInlineDiffsService),
+ llmMessageService: accessor.get(ILLMMessageService),
+ clipboardService: accessor.get(IClipboardService),
+ themeService: accessor.get(IThemeService),
+ hoverService: accessor.get(IHoverService),
+ refreshModelService: accessor.get(IRefreshModelService),
+ contextViewService: accessor.get(IContextViewService),
+ contextMenuService: accessor.get(IContextMenuService),
+ }
+}
+
diff --git a/src/vs/workbench/contrib/void/browser/registerActions.ts b/src/vs/workbench/contrib/void/browser/registerActions.ts
index d46f6bb4..ee6fcdef 100644
--- a/src/vs/workbench/contrib/void/browser/registerActions.ts
+++ b/src/vs/workbench/contrib/void/browser/registerActions.ts
@@ -150,23 +150,23 @@ registerAction2(class extends Action2 {
}
})
-// Settings (API config) menu button
-registerAction2(class extends Action2 {
- constructor() {
- super({
- id: 'void.viewSettings',
- title: 'Void Settings',
- icon: { id: 'settings-gear' },
- menu: [{ id: MenuId.ViewTitle, group: 'navigation', when: ContextKeyExpr.equals('view', VOID_VIEW_ID), }]
- });
- }
- async run(accessor: ServicesAccessor): Promise {
- const stateService = accessor.get(IVoidSidebarStateService)
- const metricsService = accessor.get(IMetricsService)
+// // Settings (API config) menu button
+// registerAction2(class extends Action2 {
+// constructor() {
+// super({
+// id: 'void.viewSettings',
+// title: 'Void Settings',
+// icon: { id: 'settings-gear' },
+// menu: [{ id: MenuId.ViewTitle, group: 'navigation', when: ContextKeyExpr.equals('view', VOID_VIEW_ID), }]
+// });
+// }
+// async run(accessor: ServicesAccessor): Promise {
+// const stateService = accessor.get(IVoidSidebarStateService)
+// const metricsService = accessor.get(IMetricsService)
- metricsService.capture('Chat Navigation', { type: 'Settings' })
+// metricsService.capture('Chat Navigation', { type: 'Settings' })
- stateService.setState({ isHistoryOpen: false, currentTab: stateService.state.currentTab === 'settings' ? 'chat' : 'settings' })
- stateService.fireBlurChat()
- }
-})
+// stateService.setState({ isHistoryOpen: false, currentTab: stateService.state.currentTab === 'settings' ? 'chat' : 'settings' })
+// stateService.fireBlurChat()
+// }
+// })
diff --git a/src/vs/workbench/contrib/void/browser/registerSidebar.ts b/src/vs/workbench/contrib/void/browser/registerSidebar.ts
index 2c7104cf..6bed1eee 100644
--- a/src/vs/workbench/contrib/void/browser/registerSidebar.ts
+++ b/src/vs/workbench/contrib/void/browser/registerSidebar.ts
@@ -18,7 +18,7 @@ import * as nls from '../../../../nls.js';
import { ViewPaneContainer } from '../../../browser/parts/views/viewPaneContainer.js';
import { SyncDescriptor } from '../../../../platform/instantiation/common/descriptors.js';
-import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';
+// import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';
import { IViewPaneOptions, ViewPane } from '../../../browser/parts/views/viewPane.js';
@@ -27,51 +27,26 @@ import { IContextKeyService } from '../../../../platform/contextkey/common/conte
import { createDecorator, IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
import { Disposable, IDisposable } from '../../../../base/common/lifecycle.js';
import { Emitter, Event } from '../../../../base/common/event.js';
-import { IThreadHistoryService } from './registerThreads.js';
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
import { IThemeService } from '../../../../platform/theme/common/themeService.js';
-import { IContextMenuService, IContextViewService } from '../../../../platform/contextview/browser/contextView.js';
+import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';
import { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';
import { IOpenerService } from '../../../../platform/opener/common/opener.js';
import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
import { IHoverService } from '../../../../platform/hover/browser/hover.js';
-import mountFn from './react/out/sidebar-tsx/Sidebar.js';
+import { mountSidebar } from './react/out/sidebar-tsx/index.js';
-import { IVoidConfigStateService } from '../../../../platform/void/common/voidConfigService.js';
-import { IFileService } from '../../../../platform/files/common/files.js';
-import { IInlineDiffsService } from './registerInlineDiffs.js';
-import { IModelService } from '../../../../editor/common/services/model.js';
-import { ILLMMessageService } from '../../../../platform/void/common/llmMessageService.js';
-import { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';
import { IViewsService } from '../../../services/views/common/viewsService.js';
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
-import { IRefreshModelService } from '../../../../platform/void/common/refreshModelService.js';
+import { getReactServices } from './reactServices.js';
// compare against search.contribution.ts and debug.contribution.ts, scm.contribution.ts (source control)
export type VoidSidebarState = {
isHistoryOpen: boolean;
- currentTab: 'chat' | 'settings';
-}
-
-export type ReactServicesType = {
- sidebarStateService: IVoidSidebarStateService;
- configStateService: IVoidConfigStateService;
- threadsStateService: IThreadHistoryService;
- fileService: IFileService;
- modelService: IModelService;
- inlineDiffService: IInlineDiffsService;
- llmMessageService: ILLMMessageService;
- clipboardService: IClipboardService;
- refreshModelService: IRefreshModelService;
-
- themeService: IThemeService,
- hoverService: IHoverService,
-
- contextViewService: IContextViewService;
- contextMenuService: IContextMenuService;
+ currentTab: 'chat';
}
// ---------- Define viewpane ----------
@@ -104,24 +79,10 @@ class VoidSidebarViewPane extends ViewPane {
// gets set immediately
this.instantiationService.invokeFunction(accessor => {
- const services: ReactServicesType = {
- configStateService: accessor.get(IVoidConfigStateService),
- sidebarStateService: accessor.get(IVoidSidebarStateService),
- threadsStateService: accessor.get(IThreadHistoryService),
- fileService: accessor.get(IFileService),
- modelService: accessor.get(IModelService),
- inlineDiffService: accessor.get(IInlineDiffsService),
- llmMessageService: accessor.get(ILLMMessageService),
- clipboardService: accessor.get(IClipboardService),
- themeService: accessor.get(IThemeService),
- hoverService: accessor.get(IHoverService),
- refreshModelService: accessor.get(IRefreshModelService),
- contextViewService: accessor.get(IContextViewService),
- contextMenuService: accessor.get(IContextMenuService),
- }
+ const services = getReactServices(accessor)
// mount react
- const disposables: IDisposable[] | undefined = mountFn(parent, services);
+ const disposables: IDisposable[] | undefined = mountSidebar(parent, services);
disposables?.forEach(d => this._register(d))
});
}
@@ -143,12 +104,12 @@ export const VOID_VIEW_ID = VOID_VIEW_CONTAINER_ID // simplicity
const viewContainerRegistry = Registry.as(ViewContainerExtensions.ViewContainersRegistry);
const viewContainer = viewContainerRegistry.registerViewContainer({
id: VOID_VIEW_CONTAINER_ID,
- title: nls.localize2('void', 'Void Chat'), // this is used to say "Void" (Ctrl + L)
+ title: nls.localize2('void chat', 'Void Chat'), // this is used to say "Void" (Ctrl + L)
ctorDescriptor: new SyncDescriptor(ViewPaneContainer, [VOID_VIEW_CONTAINER_ID, { mergeViewWithContainerWhenSingleView: true }]),
hideIfEmpty: false,
// icon: voidViewIcon,
order: 1,
-}, ViewContainerLocation.AuxiliaryBar, { doNotRegisterOpenCommand: true, });
+}, ViewContainerLocation.AuxiliaryBar, { doNotRegisterOpenCommand: true, isDefault: true });
@@ -158,17 +119,17 @@ viewsRegistry.registerViews([{
id: VOID_VIEW_ID,
hideByDefault: false, // start open
// containerIcon: voidViewIcon,
- name: nls.localize2('void chat', "Chat"), // this says ... : CHAT
+ name: nls.localize2('chat', 'Chat'), // this says ... : CHAT
ctorDescriptor: new SyncDescriptor(VoidSidebarViewPane),
canToggleVisibility: false,
canMoveView: true,
- openCommandActionDescriptor: {
- id: viewContainer.id,
- keybindings: {
- primary: KeyMod.CtrlCmd | KeyCode.KeyL,
- },
- order: 1
- },
+ // openCommandActionDescriptor: {
+ // id: viewContainer.id,
+ // keybindings: {
+ // primary: KeyMod.CtrlCmd | KeyCode.KeyL,
+ // },
+ // order: 1
+ // },
}], viewContainer);
diff --git a/src/vs/workbench/contrib/void/browser/void.contribution.ts b/src/vs/workbench/contrib/void/browser/void.contribution.ts
index 2dde5f70..dbb6f0ab 100644
--- a/src/vs/workbench/contrib/void/browser/void.contribution.ts
+++ b/src/vs/workbench/contrib/void/browser/void.contribution.ts
@@ -20,3 +20,6 @@ import './registerAutocomplete.js'
// register css
import './media/void.css'
+
+// settings pane
+import './voidSettingsEditorPane.js'
diff --git a/src/vs/workbench/contrib/void/browser/voidSettingsEditorPane.ts b/src/vs/workbench/contrib/void/browser/voidSettingsEditorPane.ts
new file mode 100644
index 00000000..cb5f4732
--- /dev/null
+++ b/src/vs/workbench/contrib/void/browser/voidSettingsEditorPane.ts
@@ -0,0 +1,116 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Glass Devtools, Inc. All rights reserved.
+ * Void Editor additions licensed under the AGPL 3.0 License.
+ *--------------------------------------------------------------------------------------------*/
+
+import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
+import { EditorInput } from '../../../common/editor/editorInput.js';
+import * as nls from '../../../../nls.js';
+import { EditorExtensions } from '../../../common/editor.js';
+import { EditorPane } from '../../../browser/parts/editor/editorPane.js';
+import { IEditorGroup } from '../../../services/editor/common/editorGroupsService.js';
+import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
+import { IThemeService } from '../../../../platform/theme/common/themeService.js';
+import { IStorageService } from '../../../../platform/storage/common/storage.js';
+import { Dimension } from '../../../../base/browser/dom.js';
+import { EditorPaneDescriptor, IEditorPaneRegistry } from '../../../browser/editor.js';
+import { SyncDescriptor } from '../../../../platform/instantiation/common/descriptors.js';
+import { Action2, registerAction2 } from '../../../../platform/actions/common/actions.js';
+import { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';
+import { Registry } from '../../../../platform/registry/common/platform.js';
+import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';
+import { ServicesAccessor } from '../../../../editor/browser/editorExtensions.js';
+import { IEditorService } from '../../../services/editor/common/editorService.js';
+import { URI } from '../../../../base/common/uri.js';
+import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
+
+
+import { mountVoidSettings } from './react/out/void-settings-tsx/index.js'
+import { getReactServices } from './reactServices.js';
+
+
+// refer to preferences.contribution.ts keybindings editor
+
+export class VoidEditorInput extends EditorInput {
+
+ static readonly ID: string = 'workbench.input.void.settings';
+
+ readonly resource = URI.from({
+ scheme: 'void-editor-settings',
+ path: 'void-settings' // Give it a unique path
+ });
+
+ constructor() {
+ super();
+ }
+
+ override get typeId(): string {
+ return VoidEditorInput.ID;
+ }
+
+ override getName(): string {
+ return nls.localize('voidSettingsInputsName', "Void Settings");
+ }
+
+}
+
+
+class MyCustomPane extends EditorPane {
+ static readonly ID = 'workbench.test.myCustomPane';
+
+ constructor(
+ group: IEditorGroup,
+ @ITelemetryService telemetryService: ITelemetryService,
+ @IThemeService themeService: IThemeService,
+ @IStorageService storageService: IStorageService,
+ @IInstantiationService private readonly instantiationService: IInstantiationService
+ ) {
+ super(MyCustomPane.ID, group, telemetryService, themeService, storageService);
+ }
+
+ protected createEditor(container: HTMLElement): void {
+
+ this.instantiationService.invokeFunction(accessor => {
+ const services = getReactServices(accessor)
+ mountVoidSettings(container, services);
+ })
+ }
+
+ layout(dimension: Dimension): void {
+ const container = this.getContainer();
+ if (!container) return;
+
+ container.style.width = `${dimension.width}px`;
+ container.style.height = `${dimension.height}px`;
+ }
+}
+
+
+
+Registry.as(EditorExtensions.EditorPane).registerEditorPane(
+ EditorPaneDescriptor.create(MyCustomPane, MyCustomPane.ID, nls.localize('MyCustomPane', "CustomPane")),
+ [new SyncDescriptor(VoidEditorInput)]
+);
+
+
+// Register the action
+registerAction2(class extends Action2 {
+ constructor() {
+ super({
+ id: 'workbench.action.openVoidEditor',
+ title: 'Open Void Settings',
+ keybinding: {
+ when: ContextKeyExpr.true(),
+ primary: KeyMod.CtrlCmd | KeyCode.KeyE,
+ weight: KeybindingWeight.WorkbenchContrib
+ }
+ });
+ }
+ async run(accessor: ServicesAccessor): Promise {
+ const editorService = accessor.get(IEditorService);
+ const instantiationService = accessor.get(IInstantiationService);
+ const input = instantiationService.createInstance(VoidEditorInput);
+ await editorService.openEditor(input);
+ }
+});
+
diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts
index e1ea851c..36bd6ad4 100644
--- a/src/vs/workbench/workbench.common.main.ts
+++ b/src/vs/workbench/workbench.common.main.ts
@@ -17,7 +17,7 @@ import './browser/workbench.contribution.js';
//#region --- Void
// Void added this:
import './contrib/void/browser/void.contribution.js';
-import '../platform/void/common/void.contribution.js';
+import '../platform/void/browser/void.contribution.js';
//#endregion