Skip to content

Commit 6a300aa

Browse files
authored
Merge pull request #17 from square/terminal-tidy
Terminal tidy
2 parents ce4e49e + b9c85b7 commit 6a300aa

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ out/
55
*.tsbuildinfo
66
package-lock.json
77
*.vsix
8+
synopsis.md

src/extension.ts

+35-6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const terminalName = '🪿 goose chat 🪿';
99

1010
export function activate(context: vscode.ExtensionContext) {
1111

12+
1213
// Check if goose CLI is installed
1314
const config = vscode.workspace.getConfiguration('goose');
1415
let defaultCommand = config.get('defaultCommand', "goose session start");
@@ -29,7 +30,6 @@ export function activate(context: vscode.ExtensionContext) {
2930
if (!gooseTerminal || gooseTerminal.exitStatus !== undefined) {
3031
gooseTerminal = vscode.window.createTerminal({
3132
name: terminalName,
32-
location: { viewColumn: vscode.ViewColumn.Beside },
3333
message: 'Loading Goose Session...', // Add a message to make it clear what terminal is for
3434
});
3535
gooseTerminal.sendText(defaultCommand);
@@ -106,15 +106,26 @@ export function activate(context: vscode.ExtensionContext) {
106106
}
107107
});
108108

109+
// Completion suggestion: ask Goose to explain it
110+
vscode.languages.registerCodeActionsProvider('*', {
111+
provideCodeActions(document: vscode.TextDocument, range: vscode.Range, context: vscode.CodeActionContext, token: vscode.CancellationToken) {
112+
const codeAction = new vscode.CodeAction('Ask goose to explain it', vscode.CodeActionKind.QuickFix);
113+
codeAction.command = { command: 'extension.askGooseToExplainIt', title: 'Ask goose to explain it' };
114+
return [codeAction];
115+
}
116+
});
117+
118+
109119
// Completion suggestion: ask Goose to finish it
110120
vscode.languages.registerCodeActionsProvider('*', {
111121
provideCodeActions(document: vscode.TextDocument, range: vscode.Range, context: vscode.CodeActionContext, token: vscode.CancellationToken) {
112-
const codeAction = new vscode.CodeAction('Ask Goose to fix it', vscode.CodeActionKind.QuickFix);
113-
codeAction.command = { command: 'extension.askGooseToFinishIt', title: 'Ask Goose to fix it' };
122+
const codeAction = new vscode.CodeAction('Ask goose to fix it', vscode.CodeActionKind.QuickFix);
123+
codeAction.command = { command: 'extension.askGooseToFix', title: 'Ask goose to fix it' };
114124
return [codeAction];
115125
}
116126
});
117127

128+
118129

119130
// Register inline completion provider
120131
vscode.languages.registerInlineCompletionItemProvider('*', {
@@ -124,17 +135,17 @@ export function activate(context: vscode.ExtensionContext) {
124135
return;
125136
}
126137

127-
const completionItem = new vscode.InlineCompletionItem('Ask Goose to complete this code');
138+
const completionItem = new vscode.InlineCompletionItem('complete with goose');
128139
completionItem.insertText = '';
129-
completionItem.command = { command: 'extension.askGooseToFinishIt', title: 'Ask Goose to complete this code' };
140+
completionItem.command = { command: 'extension.askGooseToFinishIt', title: 'complete with goose' };
130141
return [completionItem];
131142
}
132143
});
133144

134145
// Register content completion extension
135146
vscode.languages.registerCompletionItemProvider('*', {
136147
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position) {
137-
const completionItem = new vscode.CompletionItem('Ask Goose to finish this code', vscode.CompletionItemKind.Snippet);
148+
const completionItem = new vscode.CompletionItem('Ask Goose to finish this code', vscode.CompletionItemKind.Text);
138149
completionItem.insertText = '';
139150
completionItem.command = { command: 'extension.askGooseToFinishIt', title: 'Ask Goose to finish this code' };
140151
return [completionItem];
@@ -161,6 +172,24 @@ export function activate(context: vscode.ExtensionContext) {
161172
});
162173
context.subscriptions.push(askGooseToFinishItCommand);
163174

175+
const askGooseToExplainItCommand = vscode.commands.registerCommand('extension.askGooseToExplainIt', async () => {
176+
const editor = vscode.window.activeTextEditor;
177+
if (!editor) {
178+
return;
179+
}
180+
181+
const document = editor.document;
182+
const selection = editor.selection;
183+
const filePath = document.uri.fsPath;
184+
const startLine = selection.start.line + 1;
185+
186+
document.save();
187+
188+
getTerminal().sendText(`Explain the code on line: ${startLine} in file: ${filePath}. `);
189+
190+
});
191+
context.subscriptions.push(askGooseToExplainItCommand);
192+
164193
const askGooseToFix = vscode.commands.registerCommand('extension.askGooseToFix', async () => {
165194
const editor = vscode.window.activeTextEditor;
166195
if (!editor) {

0 commit comments

Comments
 (0)