From dd42e40a8d38408b3487221e6ec28ceccd4c2be4 Mon Sep 17 00:00:00 2001 From: Ujjwal Jain Date: Sun, 11 May 2025 22:01:04 -0400 Subject: [PATCH 1/2] fix: preserve selection when adding to chat via CTRL+L with closed panel --- .../contrib/void/browser/sidebarActions.ts | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/src/vs/workbench/contrib/void/browser/sidebarActions.ts b/src/vs/workbench/contrib/void/browser/sidebarActions.ts index 0e962e09..a2db29ea 100644 --- a/src/vs/workbench/contrib/void/browser/sidebarActions.ts +++ b/src/vs/workbench/contrib/void/browser/sidebarActions.ts @@ -89,10 +89,7 @@ registerAction2(class extends Action2 { }); } async run(accessor: ServicesAccessor): Promise { - - - // Get the views service to check if the sidebar is open - // const viewsService = accessor.get(IViewsService) + // Get services const commandService = accessor.get(ICommandService) const viewsService = accessor.get(IViewsService) const metricsService = accessor.get(IMetricsService) @@ -101,31 +98,28 @@ registerAction2(class extends Action2 { metricsService.capture('Ctrl+L', {}) + // Capture selection and model BEFORE opening the chat panel + const editor = editorService.getActiveCodeEditor() + const model = editor?.getModel() + if (!model) return + + const selectionRange = roundRangeToLines(editor?.getSelection(), { emptySelectionBehavior: 'null' }) + + // Now check if panel is open and open it if needed const wasAlreadyOpen = viewsService.isViewContainerVisible(VOID_VIEW_CONTAINER_ID) if (!wasAlreadyOpen) { await commandService.executeCommand(VOID_OPEN_SIDEBAR_ACTION_ID) - return } - - // if was already open - - const model = accessor.get(ICodeEditorService).getActiveCodeEditor()?.getModel() - if (!model) return - - const editor = editorService.getActiveCodeEditor() - const selectionRange = roundRangeToLines(editor?.getSelection(), { emptySelectionBehavior: 'null' }) - - // if has no selection, close + return - // if (!selectionRange) { - // viewsService.closeViewContainer(VOID_VIEW_CONTAINER_ID); - // return; - // } - - + // Add selection to chat (whether it was already open or we just opened it) // add line selection if (selectionRange) { - editor?.setSelection({ startLineNumber: selectionRange.startLineNumber, endLineNumber: selectionRange.endLineNumber, startColumn: 1, endColumn: Number.MAX_SAFE_INTEGER }) + editor?.setSelection({ + startLineNumber: selectionRange.startLineNumber, + endLineNumber: selectionRange.endLineNumber, + startColumn: 1, + endColumn: Number.MAX_SAFE_INTEGER + }) chatThreadService.addNewStagingSelection({ type: 'CodeSelection', uri: model.uri, @@ -142,12 +136,9 @@ registerAction2(class extends Action2 { language: model.getLanguageId(), state: { wasAddedAsCurrentFile: false }, }) - } await chatThreadService.focusCurrentChat() - - } }) From 45f7e4b157dc815dcd2e91c0cd88ad0869ab883d Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Mon, 12 May 2025 16:48:27 -0700 Subject: [PATCH 2/2] minor updates --- src/vs/workbench/contrib/void/browser/sidebarActions.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/void/browser/sidebarActions.ts b/src/vs/workbench/contrib/void/browser/sidebarActions.ts index a2db29ea..4112745c 100644 --- a/src/vs/workbench/contrib/void/browser/sidebarActions.ts +++ b/src/vs/workbench/contrib/void/browser/sidebarActions.ts @@ -98,20 +98,20 @@ registerAction2(class extends Action2 { metricsService.capture('Ctrl+L', {}) - // Capture selection and model BEFORE opening the chat panel + // capture selection and model before opening the chat panel const editor = editorService.getActiveCodeEditor() const model = editor?.getModel() if (!model) return const selectionRange = roundRangeToLines(editor?.getSelection(), { emptySelectionBehavior: 'null' }) - // Now check if panel is open and open it if needed + // open panel const wasAlreadyOpen = viewsService.isViewContainerVisible(VOID_VIEW_CONTAINER_ID) if (!wasAlreadyOpen) { await commandService.executeCommand(VOID_OPEN_SIDEBAR_ACTION_ID) } - // Add selection to chat (whether it was already open or we just opened it) + // Add selection to chat // add line selection if (selectionRange) { editor?.setSelection({