Skip to content

Commit 65d00e6

Browse files
committed
support for sourceRef query param in debug uri
1 parent 01b014a commit 65d00e6

1 file changed

Lines changed: 22 additions & 6 deletions

File tree

src/vs/workbench/parts/debug/browser/debugContentProvider.ts

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,21 @@ export class DebugContentProvider implements IWorkbenchContribution, ITextModelC
3232
public provideTextContent(resource: uri): TPromise<IModel> {
3333

3434
let process: IProcess;
35+
let sourceRef: number;
36+
3537
if (resource.query) {
3638
const keyvalues = resource.query.split('&');
3739
for (let keyvalue of keyvalues) {
3840
const pair = keyvalue.split('=');
39-
if (pair.length === 2 && pair[0] === 'session') {
40-
process = this.debugService.findProcessByUUID(decodeURIComponent(pair[1]));
41-
break;
41+
if (pair.length === 2) {
42+
switch (pair[0]) {
43+
case 'session':
44+
process = this.debugService.findProcessByUUID(decodeURIComponent(pair[1]));
45+
break;
46+
case 'sourceRef':
47+
sourceRef = parseInt(pair[1]);
48+
break;
49+
}
4250
}
4351
}
4452
}
@@ -55,18 +63,26 @@ export class DebugContentProvider implements IWorkbenchContribution, ITextModelC
5563
let rawSource: DebugProtocol.Source;
5664
if (source) {
5765
rawSource = source.raw;
66+
if (!sourceRef) {
67+
sourceRef = source.reference;
68+
}
5869
} else {
59-
// Remove debug: scheme
60-
rawSource = { path: resource.with({ scheme: '', query: '' }).toString(true) };
70+
// create a Source
71+
rawSource = {
72+
path: resource.with({ scheme: '', query: '' }).toString(true), // Remove debug: scheme
73+
sourceReference: sourceRef
74+
};
6175
}
6276

63-
return process.session.source({ sourceReference: source ? source.reference : undefined, source: rawSource }).then(response => {
77+
return process.session.source({ sourceReference: sourceRef, source: rawSource }).then(response => {
78+
6479
const mime = response.body.mimeType || guessMimeTypes(resource.toString())[0];
6580
const modePromise = this.modeService.getOrCreateMode(mime);
6681
const model = this.modelService.createModel(response.body.content, modePromise, resource);
6782

6883
return model;
6984
}, (err: DebugProtocol.ErrorResponse) => {
85+
7086
this.debugService.sourceIsNotAvailable(resource);
7187
const modePromise = this.modeService.getOrCreateMode(MIME_TEXT);
7288
const model = this.modelService.createModel(err.message, modePromise, resource);

0 commit comments

Comments
 (0)