Skip to content

Commit 39b4100

Browse files
committed
Enhance git symbol quick pick handlers with token count estimation and direct text insertion
- next to 'diff with commit message' show token count - when going back from 'commit reference options' we should have last selected item highlighted - escape key from 'commit reference options' doesn't show a list of commits but 'symbols'. Make sure escape key works like 'go back' action from the titlebar - the token count on 'commit reference options' is different than it is while using symbol replacement - once a commit is accepted and placed, show list of commits again so the user can select another one - don't append 'tokens' in descriptions - considering 'changes' symbol, in multi root folder workspaces, should first ask for root-folder selection - when placing 'changes' symbol, show token count next to branches - should not show the temporary 'calculating...' text ├── apps │ └── editor │ └── src │ ├── commands │ │ ├── generate-commit-message-commands │ │ │ └── actions │ │ │ └── run-generate-action.ts │ │ ├── search-files-commands │ │ │ ├── index.ts │ │ │ ├── search-files-commands.ts │ │ │ └── utils │ │ │ ├── get-target-folder-path.ts │ │ │ └── prompt-for-provided-results.ts │ │ ├── select-clipboard-paths-command.ts │ │ ├── select-files-of-commit-command.ts │ │ ├── select-imported-files-commands │ │ │ └── utils │ │ │ └── prompt-for-imported-files.ts │ │ ├── select-referencing-files-commands │ │ │ └── utils │ │ │ └── prompt-for-referencing-files.ts │ │ └── select-unstaged-files-command.ts │ ├── features │ │ ├── context-restoration │ │ │ └── utils │ │ │ └── select-context-paths.ts │ │ └── search-files │ │ ├── search-files.ts │ │ └── utils │ │ ├── analyze-files.ts │ │ ├── check-matches-condition.ts │ │ ├── create-search-regex.ts │ │ ├── group-quick-pick-items.ts │ │ ├── handle-parent-folder-result.ts │ │ ├── map-files-to-quick-pick-items.ts │ │ ├── prompt-for-config.ts │ │ ├── prompt-for-intelligent-search-results.ts │ │ ├── prompt-for-keywords-match-mode.ts │ │ ├── prompt-for-keywords-target.ts │ │ ├── prompt-for-search-mode.ts │ │ ├── prompt-for-search-results.ts │ │ ├── prompt-for-search-term.ts │ │ ├── prompt-for-shrink-mode.ts │ │ ├── search-files-by-intelligent.ts │ │ ├── search-files-by-keywords.ts │ │ ├── search-files-by-phrase.ts │ │ └── show-search-results-quick-pick.ts │ ├── utils │ │ └── git-repository-utils.ts │ └── views │ └── prompt │ └── backend │ ├── message-handlers │ │ └── handle-hash-sign-quick-pick │ │ ├── handle-hash-sign-quick-pick.ts │ │ ├── index.ts │ │ └── symbols │ │ ├── changes-symbol.ts │ │ ├── clipboard-paths-symbol.ts │ │ ├── commit-symbol.ts │ │ ├── index.ts │ │ ├── saved-context-symbol.ts │ │ ├── selection-symbol.ts │ │ └── skill-symbol.ts │ ├── prompt-view-provider.ts │ └── utils │ └── symbols │ ├── clipboard-paths │ │ └── replace-clipboard-paths-symbol.ts │ ├── fragment │ │ └── replace-fragment-symbol.ts │ ├── git │ │ └── replace-git-symbols.ts │ ├── image │ │ └── replace-image-symbol.ts │ ├── pasted-text │ │ └── replace-pasted-text-symbol.ts │ ├── replace-symbols.ts │ ├── saved-context │ │ └── replace-saved-context-symbol.ts │ ├── selection │ │ └── replace-selection-symbol.ts │ ├── skill │ │ └── replace-skill-symbol.ts │ ├── symbol-cache.ts │ └── website │ └── replace-website-symbol.ts └── packages └── shared └── src └── utils └── display-token-count.ts
1 parent 0438902 commit 39b4100

4 files changed

Lines changed: 325 additions & 98 deletions

File tree

‎apps/editor/src/views/prompt/backend/message-handlers/handle-hash-sign-quick-pick/handle-hash-sign-quick-pick.ts‎

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const clipboard_paths_label = `$(clippy) ${t('views.prompt.handlers.hash-sign.qu
2020

2121
const hash_sign_quick_pick = async (params: {
2222
extension_context: vscode.ExtensionContext
23+
on_insert: (text: string) => void
2324
}): Promise<string | undefined> => {
2425
const items: vscode.QuickPickItem[] = [
2526
{
@@ -138,10 +139,13 @@ const hash_sign_quick_pick = async (params: {
138139
result = await handle_selection_item()
139140
break
140141
case changes_label:
141-
result = await handle_changes_item()
142+
result = await handle_changes_item(params.extension_context)
142143
break
143144
case commit_label:
144-
result = await handle_commit_item(params.extension_context)
145+
result = await handle_commit_item(
146+
params.extension_context,
147+
params.on_insert
148+
)
145149
break
146150
case saved_context_label:
147151
result = await handle_saved_context_item(params.extension_context)
@@ -168,26 +172,32 @@ export const handle_hash_sign_quick_pick = async (
168172
prompt_view_provider: PromptViewProvider,
169173
extension_context: vscode.ExtensionContext
170174
): Promise<void> => {
171-
const replacement = await hash_sign_quick_pick({
172-
extension_context
173-
})
174-
175-
if (!replacement) {
176-
prompt_view_provider.send_message({
177-
command: 'FOCUS_PROMPT_FIELD'
178-
})
179-
return
175+
let first_insert = true
176+
177+
const on_insert = (replacement: string) => {
178+
if (first_insert) {
179+
const current_text = prompt_view_provider.current_instructions
180+
const is_after_hash_sign = current_text
181+
.slice(0, prompt_view_provider.caret_position)
182+
.endsWith('#')
183+
if (is_after_hash_sign) {
184+
prompt_view_provider.add_text_at_cursor_position(replacement, 1)
185+
} else {
186+
prompt_view_provider.add_text_at_cursor_position(replacement)
187+
}
188+
first_insert = false
189+
} else {
190+
prompt_view_provider.add_text_at_cursor_position(replacement)
191+
}
180192
}
181193

182-
const current_text = prompt_view_provider.current_instructions
194+
const replacement = await hash_sign_quick_pick({
195+
extension_context,
196+
on_insert
197+
})
183198

184-
const is_after_hash_sign = current_text
185-
.slice(0, prompt_view_provider.caret_position)
186-
.endsWith('#')
187-
if (is_after_hash_sign) {
188-
prompt_view_provider.add_text_at_cursor_position(replacement, 1)
189-
} else {
190-
prompt_view_provider.add_text_at_cursor_position(replacement)
199+
if (replacement) {
200+
on_insert(replacement)
191201
}
192202

193203
prompt_view_provider.send_message({

0 commit comments

Comments
 (0)