Skip to content

Commit 4bae0a7

Browse files
author
Tal Hadad
committed
Use active terminal if R is attached already
1 parent d19307e commit 4bae0a7

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

src/rTerminal.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { extensionContext, homeExtDir } from './extension';
99
import * as util from './util';
1010
import * as selection from './selection';
1111
import { getSelection } from './selection';
12-
import { cleanupSession } from './session';
12+
import { cleanupSession, attached } from './session';
1313
import { config, delay, getRterm } from './util';
1414
import { rGuestService, isGuestSession } from './liveShare';
1515
import * as fs from 'fs';
@@ -227,8 +227,12 @@ export async function chooseTerminal(): Promise<vscode.Terminal | undefined> {
227227
}
228228

229229
if (rTerm === undefined) {
230-
await createRTerm(true);
231-
await delay(200); // Let RTerm warm up
230+
if (attached && vscode.window.activeTerminal) {
231+
return vscode.window.activeTerminal;
232+
} else {
233+
await createRTerm(true);
234+
await delay(200); // Let RTerm warm up
235+
}
232236
}
233237

234238
return rTerm;

src/session.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ let activeBrowserPanel: WebviewPanel | undefined;
7272
let activeBrowserUri: Uri | undefined;
7373
let activeBrowserExternalUri: Uri | undefined;
7474
let incomingRequestServerAddressInfo: AddressInfo | undefined = undefined;
75-
let attached = false;
75+
export let attached = false;
7676

7777
const addressToStr = (addressInfo: AddressInfo) => `${addressInfo.address}:${addressInfo.port}`;
7878

@@ -84,7 +84,7 @@ function updateSessionStatusBarItem(sessionStatusBarItem: StatusBarItem) {
8484
sessionStatusBarItem.tooltip = `${info?.version}\nProcess ID: ${pid}\n${addressInfoStr ? (`Connected via TCP address: ${addressInfoStr}\n`) : ''}Command: ${info?.command}\nStart time: ${info?.start_time}\nClick to attach to active terminal.`;
8585
} else {
8686
sessionStatusBarItem.text = `R: (not attached${addressInfoStr ? `, listening on ${addressInfoStr}` : ''})`;
87-
sessionStatusBarItem.tooltip = 'Click to attach active terminal.';// TODO: Make clicking be aware of TCP R connections
87+
sessionStatusBarItem.tooltip = 'Click to attach active terminal.';
8888
}
8989
sessionStatusBarItem.show();
9090
}
@@ -126,6 +126,7 @@ export function startRequestWatcher(sessionStatusBarItem: StatusBarItem): void {
126126
export function attachActive(): void {
127127
if (config().get<boolean>('sessionWatcher')) {
128128
console.info('[attachActive]');
129+
// TODO: Connect it via TCP connection instead, if available in the configurations (and the server is up)
129130
void runTextInTerm('.vsc.attach()');
130131
if (isLiveShare() && shareWorkspace) {
131132
rHostService?.notifyRequest(requestFile, true);

0 commit comments

Comments
 (0)