Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

Commit c028e30

Browse files
Cody completions: Improve naming (#52303)
Existing names are a bit confusing with the addition of inline multi-line completions, so I suggest that we: - Change the name we refer to for this feature to **Cody completions** as we discussed in Slack (I can look up the thread if you want) - Refer to the internal providers as _inline_ or _manual_. - Inline provider has support for multi-line completions - The action to trigger completions in the side bar is now called "Cody: Generate completions" ## Test plan <img width="924" alt="Screenshot 2023-05-23 at 14 42 01" src="https://github.com/sourcegraph/sourcegraph/assets/458591/8c690a3c-c9c4-4e74-b76b-e25d87051fc7"> <img width="1177" alt="Screenshot 2023-05-23 at 14 45 35" src="https://github.com/sourcegraph/sourcegraph/assets/458591/c1fc8635-bfb8-4600-81a1-bf9837ae05a6"> <!-- All pull requests REQUIRE a test plan: https://docs.sourcegraph.com/dev/background-information/testing_principles -->
1 parent 2592cf6 commit c028e30

File tree

4 files changed

+26
-22
lines changed

4 files changed

+26
-22
lines changed

client/cody/package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@
139139
"title": "Cody: Sign out"
140140
},
141141
{
142-
"command": "cody.experimental.suggest",
143-
"title": "Cody: View Suggestions"
142+
"command": "cody.manual-completions",
143+
"title": "Cody: Open Completions Panel"
144144
},
145145
{
146146
"command": "cody.settings",
@@ -263,6 +263,10 @@
263263
{
264264
"command": "cody.comment.load",
265265
"when": "false"
266+
},
267+
{
268+
"command": "cody.manual-completions",
269+
"when": "config.cody.experimental.suggestions"
266270
}
267271
],
268272
"editor/context": [
@@ -395,7 +399,7 @@
395399
"cody.experimental.suggestions": {
396400
"order": 5,
397401
"type": "boolean",
398-
"markdownDescription": "Enables Cody inline autocompletion in your editor.",
402+
"markdownDescription": "Enables experimental Cody completions in your editor.",
399403
"default": false
400404
},
401405
"cody.experimental.chatPredictions": {

client/cody/src/completions/index.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import { CompletionsCache } from './cache'
1111
import { getContext } from './context'
1212
import { CompletionsDocumentProvider } from './docprovider'
1313
import { History } from './history'
14-
import { CompletionProvider, EndOfLineCompletionProvider, MultilineCompletionProvider } from './provider'
14+
import { CompletionProvider, InlineCompletionProvider, ManualCompletionProvider } from './provider'
1515

1616
const LOG_INLINE = { type: 'inline' }
17-
const LOG_MULTILINE = { type: 'multiline' }
17+
const LOG_MANUAL = { type: 'manual' }
1818

1919
function lastNLines(text: string, n: number): string {
2020
const lines = text.split('\n')
@@ -28,7 +28,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
2828
private maxPrefixTokens: number
2929
private maxSuffixTokens: number
3030
private abortOpenInlineCompletions: () => void = () => {}
31-
private abortOpenMultilineCompletion: () => void = () => {}
31+
private abortOpenManualCompletion: () => void = () => {}
3232
private lastContentChanges: LRUCache<string, 'add' | 'del'> = new LRUCache<string, 'add' | 'del'>({
3333
max: 10,
3434
})
@@ -128,7 +128,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
128128

129129
const remainingChars = this.tokToChar(this.promptTokens)
130130

131-
const completionNoSnippets = new EndOfLineCompletionProvider(
131+
const completionNoSnippets = new InlineCompletionProvider(
132132
this.completionsClient,
133133
remainingChars,
134134
this.responseTokens,
@@ -174,7 +174,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
174174
) {
175175
timeout = 500
176176
completers.push(
177-
new EndOfLineCompletionProvider(
177+
new InlineCompletionProvider(
178178
this.completionsClient,
179179
remainingChars,
180180
this.responseTokens,
@@ -190,7 +190,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
190190
// Start of line: medium debounce
191191
timeout = 200
192192
completers.push(
193-
new EndOfLineCompletionProvider(
193+
new InlineCompletionProvider(
194194
this.completionsClient,
195195
remainingChars,
196196
this.responseTokens,
@@ -208,7 +208,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
208208
// End of line: long debounce, complete until newline
209209
timeout = 500
210210
completers.push(
211-
new EndOfLineCompletionProvider(
211+
new InlineCompletionProvider(
212212
this.completionsClient,
213213
remainingChars,
214214
this.responseTokens,
@@ -220,7 +220,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
220220
),
221221
// Create a completion request for the current prefix with a new line added. This
222222
// will make for faster recommendations when the user presses enter.
223-
new EndOfLineCompletionProvider(
223+
new InlineCompletionProvider(
224224
this.completionsClient,
225225
remainingChars,
226226
this.responseTokens,
@@ -257,10 +257,10 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
257257
return []
258258
}
259259

260-
public async fetchAndShowCompletions(): Promise<void> {
261-
this.abortOpenMultilineCompletion()
260+
public async fetchAndShowManualCompletions(): Promise<void> {
261+
this.abortOpenManualCompletion()
262262
const abortController = new AbortController()
263-
this.abortOpenMultilineCompletion = () => abortController.abort()
263+
this.abortOpenManualCompletion = () => abortController.abort()
264264

265265
const currentEditor = vscode.window.activeTextEditor
266266
if (!currentEditor || currentEditor?.document.uri.scheme === 'cody') {
@@ -292,7 +292,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
292292

293293
const remainingChars = this.tokToChar(this.promptTokens)
294294

295-
const completionNoSnippets = new MultilineCompletionProvider(
295+
const completionNoSnippets = new ManualCompletionProvider(
296296
this.completionsClient,
297297
remainingChars,
298298
this.responseTokens,
@@ -314,7 +314,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
314314
contextChars
315315
)
316316

317-
const completer = new MultilineCompletionProvider(
317+
const completer = new ManualCompletionProvider(
318318
this.completionsClient,
319319
remainingChars,
320320
this.responseTokens,
@@ -325,14 +325,14 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr
325325
)
326326

327327
try {
328-
logEvent('CodyVSCodeExtension:completion:started', LOG_MULTILINE, LOG_MULTILINE)
328+
logEvent('CodyVSCodeExtension:completion:started', LOG_MANUAL, LOG_MANUAL)
329329
const completions = await completer.generateCompletions(abortController.signal, 3)
330330
this.documentProvider.addCompletions(completionsUri, ext, completions, {
331331
suffix: '',
332332
elapsedMillis: 0,
333333
llmOptions: null,
334334
})
335-
logEvent('CodyVSCodeExtension:completion:suggested', LOG_MULTILINE, LOG_MULTILINE)
335+
logEvent('CodyVSCodeExtension:completion:suggested', LOG_MANUAL, LOG_MANUAL)
336336
} catch (error) {
337337
if (error.message === 'aborted') {
338338
return

client/cody/src/completions/provider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ export abstract class CompletionProvider {
101101
public abstract generateCompletions(abortSignal: AbortSignal, n?: number): Promise<Completion[]>
102102
}
103103

104-
export class MultilineCompletionProvider extends CompletionProvider {
104+
export class ManualCompletionProvider extends CompletionProvider {
105105
protected createPromptPrefix(): Message[] {
106106
// TODO(beyang): escape 'Human:' and 'Assistant:'
107107
const prefix = this.prefix.trim()
@@ -203,7 +203,7 @@ export class MultilineCompletionProvider extends CompletionProvider {
203203
}
204204
}
205205

206-
export class EndOfLineCompletionProvider extends CompletionProvider {
206+
export class InlineCompletionProvider extends CompletionProvider {
207207
constructor(
208208
completionsClient: SourcegraphNodeCompletionsClient,
209209
promptChars: number,

client/cody/src/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ const register = async (
221221
history
222222
)
223223
disposables.push(
224-
vscode.commands.registerCommand('cody.experimental.suggest', async () => {
225-
await completionsProvider.fetchAndShowCompletions()
224+
vscode.commands.registerCommand('cody.manual-completions', async () => {
225+
await completionsProvider.fetchAndShowManualCompletions()
226226
}),
227227
vscode.commands.registerCommand('cody.completions.inline.accepted', () => {
228228
const params = { type: 'inline' }

0 commit comments

Comments
 (0)