Skip to content

Commit 68733d0

Browse files
committed
Adding support for expression addition from source file to Live Watch window
1 parent 7ca3aa7 commit 68733d0

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@
125125
"editor/context": [
126126
{
127127
"command": "vscode-cmsis-debugger.liveWatch.addToLiveWatch",
128-
"when": "editorTextFocus && editorHasSelection && resourceScheme == file",
129-
"group": "5_cutcopypaste@1"
128+
"when": "editorTextFocus && resourceScheme == file",
129+
"group": "z_commands"
130130
}
131131
],
132132
"commandPalette": [

src/views/live-watch/live-watch.test.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -201,17 +201,24 @@ describe('LiveWatchTreeDataProvider', () => {
201201
});
202202

203203
it('AddFromSelection adds selected text as new live watch expression to roots', async () => {
204-
(vscode.window as any).activeTextEditor = {
204+
jest.spyOn(liveWatchTreeDataProvider as any, 'evaluate').mockResolvedValue({ result: '5678', variablesReference: 0 });
205+
// Mock the active text editor with a selection whose active position returns a word range
206+
const fakeRange = { start: { line: 0, character: 0 }, end: { line: 0, character: 10 } };
207+
const mockEditor: any = {
205208
document: {
209+
getWordRangeAtPosition: jest.fn().mockReturnValue(fakeRange),
206210
getText: jest.fn().mockReturnValue('selected-expression')
207211
},
208-
selection: {} // dummy selection
212+
selection: { active: { line: 0, character: 5 } }
209213
};
210-
jest.spyOn(liveWatchTreeDataProvider as any, 'evaluate').mockResolvedValue({ result: '5678', variablesReference: 0 });
214+
(vscode.window as any).activeTextEditor = mockEditor;
211215
await (liveWatchTreeDataProvider as any).registerAddFromSelectionCommand();
212-
expect((liveWatchTreeDataProvider as any).roots.length).toBe(1);
213-
expect((liveWatchTreeDataProvider as any).roots[0].expression).toBe('selected-expression');
214-
expect((liveWatchTreeDataProvider as any).roots[0].value.result).toBe('5678');
216+
const roots = (liveWatchTreeDataProvider as any).roots;
217+
expect(mockEditor.document.getWordRangeAtPosition).toHaveBeenCalledWith(mockEditor.selection.active);
218+
expect(mockEditor.document.getText).toHaveBeenCalledWith(fakeRange);
219+
expect(roots.length).toBe(1);
220+
expect(roots[0].expression).toBe('selected-expression');
221+
expect(roots[0].value.result).toBe('5678');
215222
});
216223
});
217224

src/views/live-watch/live-watch.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,10 @@ export class LiveWatchTreeDataProvider implements vscode.TreeDataProvider<LiveWa
188188
return;
189189
}
190190
const selection = editor.selection;
191-
const selectedText = editor.document.getText(selection).trim();
191+
const document = editor.document;
192+
const range = document.getWordRangeAtPosition(selection.active);
193+
const selectedText = range ? document.getText(range).trim() : '';
194+
//const selectedText = editor.document.getText(selection[0]).trim();
192195
if (!selectedText) {
193196
return;
194197
}

0 commit comments

Comments
 (0)