Skip to content

Commit e590cbd

Browse files
committed
Refine intelligent search mode to target currently selected files and update descriptions
- current behavior: 'intelligent' search in the workspace pane searches in all files of the workspace, whereas 'intelligent' search in 'selected files' pane, searches only in selected files. Expected behavior: 'intelligent' search in the workspace pane searches only in selected files (and thus require file selection) - so it works identically to 'selected files' pane └── apps └── editor ├── package.json └── src ├── commands │ └── search-files-commands │ └── search-files-commands.ts ├── context │ ├── helpers │ │ └── get-selected-files.ts │ ├── providers │ │ └── workspace │ │ └── workspace-provider.ts │ └── shared-context-state.ts ├── extension.ts ├── features │ └── search-files │ ├── search-files.ts │ ├── search-modes │ │ └── perform-intelligent-search-mode.ts │ └── utils │ ├── analyze-files.ts │ └── search-files-by-intelligent.ts ├── i18n │ └── translations │ └── features │ └── search-files.ts └── utils └── is-valid-git-branch-name.ts
1 parent 52744d4 commit e590cbd

2 files changed

Lines changed: 51 additions & 18 deletions

File tree

‎apps/editor/src/features/search-files/search-files.ts‎

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as path from 'path'
12
import * as vscode from 'vscode'
23
import { WorkspaceProvider } from '@/context/providers/workspace/workspace-provider'
34
import { t } from '@/i18n'
@@ -99,15 +100,47 @@ export const search_files = async (params: {
99100
} else if (search_mode == 'keywords') {
100101
flow_result = await perform_keywords_search_mode(flow_params)
101102
} else if (search_mode == 'intelligent') {
102-
const files = await resolve_files()
103+
let files = await resolve_files()
104+
let is_search_in_selected = params.is_search_in_selected
105+
106+
if (!is_search_in_selected && !params.is_sub_search) {
107+
const currently_selected =
108+
params.workspace_provider.get_selected_files()
109+
110+
if (currently_selected.length === 0) {
111+
vscode.window.showInformationMessage(
112+
t('common.warning.no-files-selected' as any)
113+
)
114+
continue
115+
}
116+
117+
let files_to_search = currently_selected
118+
if (params.folder_path) {
119+
files_to_search = currently_selected.filter((f) => {
120+
const relative = path.relative(params.folder_path!, f)
121+
return !relative.startsWith('..') && !path.isAbsolute(relative)
122+
})
123+
}
124+
125+
if (files_to_search.length === 0) {
126+
vscode.window.showInformationMessage(
127+
t('feature.search-files.info.no-files-selected-in-folder' as any)
128+
)
129+
continue
130+
}
131+
132+
files = files_to_search
133+
is_search_in_selected = true
134+
}
135+
103136
flow_result = await perform_intelligent_search_mode({
104137
files,
105138
workspace_provider: params.workspace_provider,
106139
extension_context: params.extension_context,
107140
websocket_manager: params.websocket_manager,
108141
show_back_button: params.show_back_button,
109142
search_in_results,
110-
is_search_in_selected: params.is_search_in_selected,
143+
is_search_in_selected: is_search_in_selected,
111144
is_sub_search: params.is_sub_search,
112145
folder_path: params.folder_path,
113146
get_file_content: params.get_file_content

‎apps/editor/src/i18n/translations/features/search-files.ts‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -342,22 +342,22 @@ export const translations = {
342342
bg: 'Интелигентен'
343343
},
344344
'feature.search-files.mode.intelligent-description': {
345-
en: 'Send prompt with files',
346-
pl: 'Wyślij prompt z plikami',
347-
'zh-cn': '发送包含文件的提示词',
348-
ja: 'ファイル付きでプロンプトを送信',
349-
'zh-tw': '發送包含檔案的提示詞',
350-
de: 'Prompt mit Dateien senden',
351-
es: 'Enviar prompt con archivos',
352-
fr: 'Envoyer un prompt avec des fichiers',
353-
'pt-br': 'Enviar prompt com arquivos',
354-
ru: 'Отправить промпт с файлами',
355-
ko: '파일과 함께 프롬프트 전송',
356-
it: 'Invia prompt con file',
357-
tr: 'İstemi dosyalarla gönder',
358-
cs: 'Odeslat prompt se soubory',
359-
hu: 'Prompt küldése fájlokkal',
360-
bg: 'Изпращане на промпт с файлове'
345+
en: 'Send prompt with selected files',
346+
pl: 'Wyślij prompt z wybranymi plikami',
347+
'zh-cn': '发送包含选定文件的提示词',
348+
ja: '選択されたファイルを含むプロンプトを送信',
349+
'zh-tw': '發送包含選定檔案的提示詞',
350+
de: 'Prompt mit ausgewählten Dateien senden',
351+
es: 'Enviar prompt con archivos seleccionados',
352+
fr: 'Envoyer un prompt avec les fichiers sélectionnés',
353+
'pt-br': 'Enviar prompt com arquivos selecionados',
354+
ru: 'Отправить промпт с выбранными файлами',
355+
ko: '선택된 파일이 포함된 프롬프트 전송',
356+
it: 'Invia prompt con i file selezionati',
357+
tr: 'Seçili dosyalarla istem gönder',
358+
cs: 'Odeslat prompt s vybranými soubory',
359+
hu: 'Prompt küldése a kiválasztott fájlokkal',
360+
bg: 'Изпращане на промпт с избраните файлове'
361361
},
362362
'feature.search-files.prompt.intelligent': {
363363
en: 'Enter natural language search query.',

0 commit comments

Comments
 (0)