Skip to content

Commit 9c15ef3

Browse files
committed
Add option to synchronize edit format between web and api modes
- remove the ability to 'use' task - rename handle_update_last_used_web_configuration_or_group to handle_update_last_used_web_configuration - should not change mode upon going back 'home' - we want the prompt type to stay the same (if possible) when in Main. But going back to Home and choosing a mode should load last used prompt type within that mode. - make 'edit format' to be stored separately for each mode - add setting 'Synchronize Edit Format Between Modes' to General > Prompt Field - respect setting: synchronizeEditFormatBetweenModes
1 parent ce4cb09 commit 9c15ef3

27 files changed

Lines changed: 308 additions & 116 deletions

‎apps/editor/package.json‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,11 @@
933933
"scope": "resource",
934934
"default": true
935935
},
936+
"codeWebChat.synchronizeEditFormatBetweenModes": {
937+
"type": "boolean",
938+
"scope": "resource",
939+
"default": true
940+
},
936941
"codeWebChat.voiceInputPushToTalk": {
937942
"type": "boolean",
938943
"scope": "resource"

‎apps/editor/src/constants/state-keys.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export const DUPLICATE_WORKSPACE_CONTEXT_STATE_KEY =
3434
'duplicate-workspace-context'
3535

3636
export const EDIT_FORMAT_STATE_KEY = 'edit-format'
37+
export const get_edit_format_state_key = (mode: string) => `edit-format-${mode}`
3738
export const WEB_MODE_STATE_KEY = 'web-mode'
3839
export const API_MODE_STATE_KEY = 'api-mode'
3940
export const PROMPT_VIEW_MODE_STATE_KEY = 'prompt-view-mode'

‎apps/editor/src/views/prompt/backend/message-handlers/handle-autofill.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
EDIT_FORMAT_INSTRUCTIONS_SEARCH_REPLACE,
2222
EDIT_FORMAT_INSTRUCTIONS_DIFF
2323
} from '@/constants/edit-format-instructions'
24-
import { handle_update_last_used_web_configuration_or_group } from './handle-update-last-used-web-configuration-or-group'
24+
import { handle_update_last_used_web_configuration } from './handle-update-last-used-web-configuration'
2525
import { replace_symbols } from '@/views/prompt/backend/utils/symbols/replace-symbols'
2626
import { show_configuration_quick_pick } from '@/utils/show-configuration-quick-pick'
2727
import { PromptBuilder } from '@/utils/prompt-builder'
@@ -66,7 +66,7 @@ export const handle_autofill = async (params: {
6666
const resolved_web_configuration_name = resolution.web_configuration_name
6767

6868
if (params.web_configuration_name !== undefined) {
69-
handle_update_last_used_web_configuration_or_group({
69+
handle_update_last_used_web_configuration({
7070
prompt_view_provider: params.prompt_view_provider,
7171
web_configuration_name: params.web_configuration_name
7272
})
@@ -309,7 +309,7 @@ const show_web_configuration_quick_pick = async (params: {
309309
}
310310

311311
if (web_configuration.name) {
312-
handle_update_last_used_web_configuration_or_group({
312+
handle_update_last_used_web_configuration({
313313
prompt_view_provider,
314314
web_configuration_name: web_configuration.name
315315
})

‎apps/editor/src/views/prompt/backend/message-handlers/handle-mode-changed.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ export const handle_mode_changed = (
66
message: ModeChangedMessage
77
): void => {
88
prompt_view_provider.mode = message.mode
9+
prompt_view_provider.send_message({
10+
command: 'EDIT_FORMAT',
11+
edit_format: prompt_view_provider.edit_format
12+
})
913
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { PromptViewProvider } from '../prompt-view-provider'
2+
3+
export const handle_request_return_home = async (
4+
prompt_view_provider: PromptViewProvider
5+
) => {
6+
prompt_view_provider.send_message({ command: 'RETURN_HOME' })
7+
}

‎apps/editor/src/views/prompt/backend/message-handlers/handle-return-home-and-switch-to-edit-files.ts‎

Lines changed: 0 additions & 32 deletions
This file was deleted.

‎apps/editor/src/views/prompt/backend/message-handlers/handle-save-edit-format.ts‎

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,53 @@
1-
import { EDIT_FORMAT_STATE_KEY } from '@/constants/state-keys'
1+
import * as vscode from 'vscode'
2+
import { get_edit_format_state_key } from '@/constants/state-keys'
23
import { PromptViewProvider } from '@/views/prompt/backend/prompt-view-provider'
34
import { SaveEditFormatMessage } from '@/views/prompt/types/messages'
5+
import { MODE } from '@/views/prompt/types/main-view-mode'
46

57
export const handle_save_edit_format = async (
68
prompt_view_provider: PromptViewProvider,
79
message: SaveEditFormatMessage
810
): Promise<void> => {
9-
prompt_view_provider.edit_format = message.edit_format
10-
await prompt_view_provider.extension_context.workspaceState.update(
11-
EDIT_FORMAT_STATE_KEY,
12-
message.edit_format
13-
)
14-
await prompt_view_provider.extension_context.globalState.update(
15-
EDIT_FORMAT_STATE_KEY,
16-
message.edit_format
11+
const config = vscode.workspace.getConfiguration('codeWebChat')
12+
const synchronize = config.get<boolean>(
13+
'synchronizeEditFormatBetweenModes',
14+
true
1715
)
1816

17+
prompt_view_provider.edit_format = message.edit_format
18+
19+
if (synchronize) {
20+
prompt_view_provider.web_edit_format = message.edit_format
21+
prompt_view_provider.api_edit_format = message.edit_format
22+
await Promise.all([
23+
prompt_view_provider.extension_context.workspaceState.update(
24+
get_edit_format_state_key(MODE.WEB),
25+
message.edit_format
26+
),
27+
prompt_view_provider.extension_context.globalState.update(
28+
get_edit_format_state_key(MODE.WEB),
29+
message.edit_format
30+
),
31+
prompt_view_provider.extension_context.workspaceState.update(
32+
get_edit_format_state_key(MODE.API),
33+
message.edit_format
34+
),
35+
prompt_view_provider.extension_context.globalState.update(
36+
get_edit_format_state_key(MODE.API),
37+
message.edit_format
38+
)
39+
])
40+
} else {
41+
await prompt_view_provider.extension_context.workspaceState.update(
42+
get_edit_format_state_key(prompt_view_provider.mode),
43+
message.edit_format
44+
)
45+
await prompt_view_provider.extension_context.globalState.update(
46+
get_edit_format_state_key(prompt_view_provider.mode),
47+
message.edit_format
48+
)
49+
}
50+
1951
prompt_view_provider.send_message({
2052
command: 'EDIT_FORMAT',
2153
edit_format: prompt_view_provider.edit_format

‎apps/editor/src/views/prompt/backend/message-handlers/handle-select-edit-format.ts‎

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import * as vscode from 'vscode'
2-
import { EDIT_FORMAT_STATE_KEY } from '@/constants/state-keys'
2+
import { get_edit_format_state_key } from '@/constants/state-keys'
33
import { PromptViewProvider } from '@/views/prompt/backend/prompt-view-provider'
44
import { SelectEditFormatMessage } from '@/views/prompt/types/messages'
55
import { EditFormat } from '@shared/types/edit-format'
66
import { t } from '@/i18n'
7+
import { MODE } from '@/views/prompt/types/main-view-mode'
78

89
export const handle_select_edit_format = async (
910
prompt_view_provider: PromptViewProvider,
@@ -88,16 +89,46 @@ export const handle_select_edit_format = async (
8889
return
8990
}
9091

91-
prompt_view_provider.edit_format = selection.value
92-
await prompt_view_provider.extension_context.workspaceState.update(
93-
EDIT_FORMAT_STATE_KEY,
94-
selection.value
95-
)
96-
await prompt_view_provider.extension_context.globalState.update(
97-
EDIT_FORMAT_STATE_KEY,
98-
selection.value
92+
const config = vscode.workspace.getConfiguration('codeWebChat')
93+
const synchronize = config.get<boolean>(
94+
'synchronizeEditFormatBetweenModes',
95+
true
9996
)
10097

98+
prompt_view_provider.edit_format = selection.value
99+
100+
if (synchronize) {
101+
prompt_view_provider.web_edit_format = selection.value
102+
prompt_view_provider.api_edit_format = selection.value
103+
await Promise.all([
104+
prompt_view_provider.extension_context.workspaceState.update(
105+
get_edit_format_state_key(MODE.WEB),
106+
selection.value
107+
),
108+
prompt_view_provider.extension_context.globalState.update(
109+
get_edit_format_state_key(MODE.WEB),
110+
selection.value
111+
),
112+
prompt_view_provider.extension_context.workspaceState.update(
113+
get_edit_format_state_key(MODE.API),
114+
selection.value
115+
),
116+
prompt_view_provider.extension_context.globalState.update(
117+
get_edit_format_state_key(MODE.API),
118+
selection.value
119+
)
120+
])
121+
} else {
122+
await prompt_view_provider.extension_context.workspaceState.update(
123+
get_edit_format_state_key(prompt_view_provider.mode),
124+
selection.value
125+
)
126+
await prompt_view_provider.extension_context.globalState.update(
127+
get_edit_format_state_key(prompt_view_provider.mode),
128+
selection.value
129+
)
130+
}
131+
101132
prompt_view_provider.send_message({
102133
command: 'EDIT_FORMAT',
103134
edit_format: prompt_view_provider.edit_format

apps/editor/src/views/prompt/backend/message-handlers/handle-update-last-used-web-configuration-or-group.ts renamed to apps/editor/src/views/prompt/backend/message-handlers/handle-update-last-used-web-configuration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { PromptViewProvider } from '@/views/prompt/backend/prompt-view-provider'
22
import { get_last_used_web_configuration_key } from '@/constants/state-keys'
33

4-
export const handle_update_last_used_web_configuration_or_group = (params: {
4+
export const handle_update_last_used_web_configuration = (params: {
55
prompt_view_provider: PromptViewProvider
66
web_configuration_name?: string
77
}) => {

‎apps/editor/src/views/prompt/backend/message-handlers/index.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ export * from './handle-create-api-configuration'
6767
export * from './handle-delete-api-configuration'
6868
export * from './handle-get-find-relevant-files-shrink-source-code'
6969
export * from './handle-save-find-relevant-files-shrink-source-code'
70-
export * from './handle-update-last-used-web-configuration-or-group'
71-
export * from './handle-return-home-and-switch-to-edit-files'
70+
export * from './handle-update-last-used-web-configuration'
71+
export * from './handle-request-return-home'
7272
export * from './handle-pick-tasks-workspace'
7373

7474
export * from './handle-get-token-count'

0 commit comments

Comments
 (0)