Skip to content

Commit 28bb068

Browse files
authored
Add R info to status bar item text and tooltip (#836)
* Add R info to status bar item text and tooltip * Remove attach_time and add command * Update shareSession.ts
1 parent bf928b9 commit 28bb068

4 files changed

Lines changed: 31 additions & 7 deletions

File tree

R/session/vsc.R

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,8 +478,14 @@ attach <- function() {
478478
rstudioapi_util_env$update_addin_registry(addin_registry)
479479
}
480480
request("attach",
481+
version = sprintf("%s.%s", R.version$major, R.version$minor),
481482
tempdir = tempdir,
482-
plot = getOption("vsc.plot", "Two")
483+
plot = getOption("vsc.plot", "Two"),
484+
info = list(
485+
command = commandArgs()[[1L]],
486+
version = R.version.string,
487+
start_time = format(file.info(tempdir)$ctime)
488+
)
483489
)
484490
if (identical(names(dev.cur()), "httpgd")) {
485491
.vsc$request("httpgd", url = httpgd::hgd_url())

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<apiImp
213213
const sessionStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 1000);
214214
sessionStatusBarItem.command = 'r.attachActive';
215215
sessionStatusBarItem.text = 'R: (not attached)';
216-
sessionStatusBarItem.tooltip = 'Attach Active Terminal';
216+
sessionStatusBarItem.tooltip = 'Click to attach active terminal.';
217217
sessionStatusBarItem.show();
218218
context.subscriptions.push(sessionStatusBarItem);
219219
void session.startRequestWatcher(sessionStatusBarItem);

src/liveShare/shareSession.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ let guestPid: string;
1414
let guestPlotView: string;
1515
export let guestGlobalenv: unknown;
1616
export let guestResDir: string;
17+
let rVer: string;
18+
let info: IRequest['info'];
1719

1820
// Browser Vars
1921
// Used to keep track of shared browsers
@@ -37,6 +39,12 @@ interface IRequest {
3739
requestPath?: string;
3840
uuid?: number;
3941
tempdir?: string;
42+
version?: string;
43+
info?: {
44+
version: string,
45+
command: string,
46+
start_time: string
47+
};
4048
}
4149

4250
export function initGuest(context: vscode.ExtensionContext): void {
@@ -45,7 +53,7 @@ export function initGuest(context: vscode.ExtensionContext): void {
4553
const sessionStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 1000);
4654
sessionStatusBarItem.command = 'r.attachActiveGuest';
4755
sessionStatusBarItem.text = 'Guest R: (not attached)';
48-
sessionStatusBarItem.tooltip = 'Attach to Host Terminal';
56+
sessionStatusBarItem.tooltip = 'Click to attach to host terminal';
4957
sessionStatusBarItem.show();
5058
context.subscriptions.push(
5159
sessionStatusBarItem,
@@ -58,6 +66,7 @@ export function initGuest(context: vscode.ExtensionContext): void {
5866
export function detachGuest(): void {
5967
console.info('[Guest Service] detach guest from workspace');
6068
sessionStatusBarItem.text = 'Guest R: (not attached)';
69+
sessionStatusBarItem.tooltip = 'Click to attach to host terminal';
6170
guestGlobalenv = undefined;
6271
rWorkspace?.refresh();
6372
}
@@ -96,8 +105,8 @@ export async function updateGuestRequest(file: string, force: boolean = false):
96105
guestPid = String(request.pid);
97106
guestPlotView = String(request.plot);
98107
console.info(`[updateGuestRequest] attach PID: ${guestPid}`);
99-
sessionStatusBarItem.text = `Guest R: ${guestPid}`;
100-
sessionStatusBarItem.show();
108+
sessionStatusBarItem.text = `Guest R ${rVer}: ${guestPid}`;
109+
sessionStatusBarItem.tooltip = `${info.version}\nProcess ID: ${guestPid}\nCommand: ${info.command}\nStart time: ${info.start_time}\nClick to attach to host terminal.`;
101110
break;
102111
}
103112
case 'browser': {
@@ -125,8 +134,12 @@ export async function updateGuestRequest(file: string, force: boolean = false):
125134
} else {
126135
guestPid = String(request.pid);
127136
guestPlotView = String(request.plot);
137+
rVer = String(request.version);
138+
info = request.info;
139+
128140
console.info(`[updateGuestRequest] attach PID: ${guestPid}`);
129-
sessionStatusBarItem.text = `Guest R: ${guestPid}`;
141+
sessionStatusBarItem.text = `Guest R ${rVer}: ${guestPid}`;
142+
sessionStatusBarItem.tooltip = `${info.version}\nProcess ID: ${guestPid}\nCommand: ${info.command}\nStart time: ${info.start_time}\nClick to attach to host terminal.`;
130143
sessionStatusBarItem.show();
131144
}
132145
}

src/session.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ let requestTimeStamp: number;
2525
let responseTimeStamp: number;
2626
export let sessionDir: string;
2727
export let workingDir: string;
28+
let rVer: string;
2829
let pid: string;
30+
let info: any;
2931
export let globalenvFile: string;
3032
let globalenvLockFile: string;
3133
let globalenvTimeStamp: number;
@@ -733,12 +735,15 @@ async function updateRequest(sessionStatusBarItem: StatusBarItem) {
733735
break;
734736
}
735737
case 'attach': {
738+
rVer = String(request.version);
736739
pid = String(request.pid);
740+
info = request.info;
737741
sessionDir = path.join(request.tempdir, 'vscode-R');
738742
workingDir = request.wd;
739743
plotView = String(request.plot);
740744
console.info(`[updateRequest] attach PID: ${pid}`);
741-
sessionStatusBarItem.text = `R: ${pid}`;
745+
sessionStatusBarItem.text = `R ${rVer}: ${pid}`;
746+
sessionStatusBarItem.tooltip = `${info.version}\nProcess ID: ${pid}\nCommand: ${info.command}\nStart time: ${info.start_time}\nClick to attach to active terminal.`;
742747
sessionStatusBarItem.show();
743748
updateSessionWatcher();
744749
purgeAddinPickerItems();

0 commit comments

Comments
 (0)