Skip to content

Commit bd64c2f

Browse files
committed
Persist file search query history per search mode by replacing the unified state key with mode-specific keys
- don't use current text selection, should preserve typed values of each mode
1 parent 88cbf8d commit bd64c2f

2 files changed

Lines changed: 40 additions & 59 deletions

File tree

apps/editor/src/commands/search-files-command/search-files-commands.ts

Lines changed: 34 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import * as vscode from 'vscode'
22
import { WorkspaceProvider } from '../../context/providers/workspace/workspace-provider'
33
import { Logger } from '@shared/utils/logger'
44
import {
5-
LAST_SEARCH_FILES_FOR_CONTEXT_QUERY_STATE_KEY,
5+
LAST_SEARCH_FILES_PHRASE_QUERY_STATE_KEY,
6+
LAST_SEARCH_FILES_KEYWORDS_QUERY_STATE_KEY,
7+
LAST_SEARCH_FILES_INTELLIGENT_QUERY_STATE_KEY,
68
LAST_SEARCH_FILES_FOR_CONTEXT_MODE_STATE_KEY,
79
LAST_FIND_RELEVANT_FILES_SHRINK_STATE_KEY
810
} from '../../constants/state-keys'
@@ -25,81 +27,56 @@ export const search_files_commands = (
2527
workspace_provider: WorkspaceProvider,
2628
extension_context: vscode.ExtensionContext
2729
) => {
28-
const search_handler = async (item?: any, auto_submit: boolean = false) => {
30+
const search_handler = async (item?: any) => {
2931
const folder_path = await get_target_folder_path(item)
3032

31-
let initial_search_term =
32-
extension_context.workspaceState.get<string>(
33-
LAST_SEARCH_FILES_FOR_CONTEXT_QUERY_STATE_KEY
34-
) || ''
35-
3633
let initial_search_mode =
3734
extension_context.workspaceState.get<
3835
'phrase' | 'keywords' | 'intelligent'
3936
>(LAST_SEARCH_FILES_FOR_CONTEXT_MODE_STATE_KEY) || 'phrase'
4037

41-
let should_auto_submit = false
42-
43-
const active_editor = vscode.window.activeTextEditor
44-
if (active_editor) {
45-
const selection = active_editor.selection
46-
if (!selection.isEmpty) {
47-
const selected_text = active_editor.document.getText(selection).trim()
48-
if (selected_text.length > 0) {
49-
initial_search_term = selected_text
50-
if (auto_submit) {
51-
should_auto_submit = true
52-
}
53-
}
54-
}
55-
}
56-
5738
while (true) {
5839
try {
59-
let search_mode: 'phrase' | 'keywords' | 'intelligent' =
60-
initial_search_mode
61-
62-
if (!should_auto_submit) {
63-
const mode_result = await prompt_for_search_mode(initial_search_mode)
64-
if (!mode_result) return
65-
66-
initial_search_mode = mode_result
67-
search_mode = mode_result
68-
await extension_context.workspaceState.update(
69-
LAST_SEARCH_FILES_FOR_CONTEXT_MODE_STATE_KEY,
70-
search_mode
71-
)
72-
}
40+
const mode_result = await prompt_for_search_mode(initial_search_mode)
41+
if (!mode_result) return
42+
43+
initial_search_mode = mode_result
44+
const search_mode = mode_result
45+
await extension_context.workspaceState.update(
46+
LAST_SEARCH_FILES_FOR_CONTEXT_MODE_STATE_KEY,
47+
search_mode
48+
)
7349

7450
let go_back_to_mode = false
7551
let break_outer = false
7652

7753
while (true) {
78-
let search_term_input: string | undefined
79-
80-
if (should_auto_submit && initial_search_term.length > 0) {
81-
search_term_input = initial_search_term
82-
should_auto_submit = false
83-
} else {
84-
const result = await prompt_for_search_term(
85-
initial_search_term,
86-
search_mode
87-
)
88-
if (result.back) {
89-
go_back_to_mode = true
90-
break
91-
}
92-
if (!result.value) return
93-
search_term_input = result.value
54+
const state_key =
55+
search_mode == 'phrase'
56+
? LAST_SEARCH_FILES_PHRASE_QUERY_STATE_KEY
57+
: search_mode == 'keywords'
58+
? LAST_SEARCH_FILES_KEYWORDS_QUERY_STATE_KEY
59+
: LAST_SEARCH_FILES_INTELLIGENT_QUERY_STATE_KEY
60+
61+
const initial_search_term =
62+
extension_context.workspaceState.get<string>(state_key) || ''
63+
64+
const result = await prompt_for_search_term(
65+
initial_search_term,
66+
search_mode
67+
)
68+
if (result.back) {
69+
go_back_to_mode = true
70+
break
9471
}
72+
if (!result.value) return
73+
const search_term_input = result.value
9574

9675
await extension_context.workspaceState.update(
97-
LAST_SEARCH_FILES_FOR_CONTEXT_QUERY_STATE_KEY,
76+
state_key,
9877
search_term_input
9978
)
10079

101-
initial_search_term = search_term_input
102-
10380
const search_term = search_term_input.trim()
10481
if (search_term.length == 0) return
10582

@@ -338,7 +315,7 @@ export const search_files_commands = (
338315
),
339316
vscode.commands.registerCommand(
340317
'codeWebChat.searchFilesFromFile',
341-
(item: any) => search_handler(item, true)
318+
(item: any) => search_handler(item)
342319
)
343320
]
344321
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,12 @@ export const get_recently_used_web_configurations_key = (
8181

8282
export const LAST_SELECTED_BROWSER_ID_STATE_KEY = 'last-selected-browser-id'
8383

84-
export const LAST_SEARCH_FILES_FOR_CONTEXT_QUERY_STATE_KEY =
85-
'last-search-files-for-context-query'
84+
export const LAST_SEARCH_FILES_PHRASE_QUERY_STATE_KEY =
85+
'last-search-files-phrase-query'
86+
export const LAST_SEARCH_FILES_KEYWORDS_QUERY_STATE_KEY =
87+
'last-search-files-keywords-query'
88+
export const LAST_SEARCH_FILES_INTELLIGENT_QUERY_STATE_KEY =
89+
'last-search-files-intelligent-query'
8690

8791
export const LAST_SEARCH_FILES_FOR_CONTEXT_MODE_STATE_KEY =
8892
'last-search-files-for-context-mode'

0 commit comments

Comments
 (0)