Skip to content

Commit 721441c

Browse files
authored
Fix references for copilot backing docs again (microsoft#213848)
Fixes microsoft/vscode-copilot-release#1055
1 parent 7131055 commit 721441c

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

src/vs/base/common/network.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,15 @@ export namespace Schemas {
7474

7575
/** Scheme used for code blocks in chat. */
7676
export const vscodeChatCodeBlock = 'vscode-chat-code-block';
77+
78+
/**
79+
* Scheme used for backing documents created by copilot for chat.
80+
*/
81+
export const vscodeCopilotBackingChatCodeBlock = 'vscode-copilot-chat-code-block';
82+
7783
/** Scheme used for LHS of code compare (aka diff) blocks in chat. */
7884
export const vscodeChatCodeCompareBlock = 'vscode-chat-code-compare-block';
85+
7986
/** Scheme used for the chat input editor. */
8087
export const vscodeChatSesssion = 'vscode-chat-editor';
8188

src/vs/editor/contrib/gotoSymbol/browser/goToSymbol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function shouldIncludeLocationLink(sourceModel: ITextModel, loc: LocationLink):
2222
}
2323

2424
// Otherwise filter out locations from internal schemes
25-
if (matchesSomeScheme(loc.uri, Schemas.walkThroughSnippet, Schemas.vscodeChatCodeBlock, Schemas.vscodeChatCodeCompareBlock)) {
25+
if (matchesSomeScheme(loc.uri, Schemas.walkThroughSnippet, Schemas.vscodeChatCodeBlock, Schemas.vscodeChatCodeCompareBlock, Schemas.vscodeCopilotBackingChatCodeBlock)) {
2626
return false;
2727
}
2828

src/vs/platform/markers/common/markerService.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export const unsupportedSchemas = new Set([
1818
Schemas.walkThrough,
1919
Schemas.walkThroughSnippet,
2020
Schemas.vscodeChatCodeBlock,
21+
Schemas.vscodeCopilotBackingChatCodeBlock,
2122
]);
2223

2324
class DoubleResourceMap<V> {

src/vs/workbench/contrib/chat/browser/chatWidget.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { disposableTimeout, timeout } from 'vs/base/common/async';
99
import { toErrorMessage } from 'vs/base/common/errorMessage';
1010
import { Emitter, Event } from 'vs/base/common/event';
1111
import { Disposable, DisposableStore, IDisposable, MutableDisposable, combinedDisposable, toDisposable } from 'vs/base/common/lifecycle';
12-
import { Schemas } from 'vs/base/common/network';
13-
import { isEqual } from 'vs/base/common/resources';
12+
import { matchesScheme, Schemas } from 'vs/base/common/network';
13+
import { extUri, isEqual } from 'vs/base/common/resources';
1414
import { isDefined } from 'vs/base/common/types';
1515
import { URI } from 'vs/base/common/uri';
1616
import 'vs/css!./media/chat';
@@ -200,11 +200,18 @@ export class ChatWidget extends Disposable implements IChatWidget {
200200
this._codeBlockModelCollection = this._register(instantiationService.createInstance(CodeBlockModelCollection));
201201

202202
this._register(codeEditorService.registerCodeEditorOpenHandler(async (input: ITextResourceEditorInput, _source: ICodeEditor | null, _sideBySide?: boolean): Promise<ICodeEditor | null> => {
203-
if (input.resource.scheme !== Schemas.vscodeChatCodeBlock) {
203+
let resource = input.resource;
204+
205+
// if trying to open backing documents, actually open the real chat code block doc
206+
if (matchesScheme(resource, Schemas.vscodeCopilotBackingChatCodeBlock)) {
207+
resource = resource.with({ scheme: Schemas.vscodeChatCodeBlock });
208+
}
209+
210+
if (resource.scheme !== Schemas.vscodeChatCodeBlock) {
204211
return null;
205212
}
206213

207-
const responseId = input.resource.path.split('/').at(1);
214+
const responseId = resource.path.split('/').at(1);
208215
if (!responseId) {
209216
return null;
210217
}
@@ -214,12 +221,14 @@ export class ChatWidget extends Disposable implements IChatWidget {
214221
return null;
215222
}
216223

224+
// TODO: needs to reveal the chat view
225+
217226
this.reveal(item);
218227

219228
await timeout(0); // wait for list to actually render
220229

221230
for (const editor of this.renderer.editorsInUse() ?? []) {
222-
if (editor.uri?.toString() === input.resource.toString()) {
231+
if (extUri.isEqual(editor.uri, resource, true)) {
223232
const inner = editor.editor;
224233
if (input.options?.selection) {
225234
inner.setSelection({

0 commit comments

Comments
 (0)