Skip to content

Commit

Permalink
Add R info to status bar item text and tooltip (#836)
Browse files Browse the repository at this point in the history
* Add R info to status bar item text and tooltip

* Remove attach_time and add command

* Update shareSession.ts
  • Loading branch information
renkun-ken committed Oct 26, 2021
1 parent bf928b9 commit 28bb068
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 7 deletions.
8 changes: 7 additions & 1 deletion R/session/vsc.R
Original file line number Diff line number Diff line change
Expand Up @@ -478,8 +478,14 @@ attach <- function() {
rstudioapi_util_env$update_addin_registry(addin_registry)
}
request("attach",
version = sprintf("%s.%s", R.version$major, R.version$minor),
tempdir = tempdir,
plot = getOption("vsc.plot", "Two")
plot = getOption("vsc.plot", "Two"),
info = list(
command = commandArgs()[[1L]],
version = R.version.string,
start_time = format(file.info(tempdir)$ctime)
)
)
if (identical(names(dev.cur()), "httpgd")) {
.vsc$request("httpgd", url = httpgd::hgd_url())
Expand Down
2 changes: 1 addition & 1 deletion src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<apiImp
const sessionStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 1000);
sessionStatusBarItem.command = 'r.attachActive';
sessionStatusBarItem.text = 'R: (not attached)';
sessionStatusBarItem.tooltip = 'Attach Active Terminal';
sessionStatusBarItem.tooltip = 'Click to attach active terminal.';
sessionStatusBarItem.show();
context.subscriptions.push(sessionStatusBarItem);
void session.startRequestWatcher(sessionStatusBarItem);
Expand Down
21 changes: 17 additions & 4 deletions src/liveShare/shareSession.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ let guestPid: string;
let guestPlotView: string;
export let guestGlobalenv: unknown;
export let guestResDir: string;
let rVer: string;
let info: IRequest['info'];

// Browser Vars
// Used to keep track of shared browsers
Expand All @@ -37,6 +39,12 @@ interface IRequest {
requestPath?: string;
uuid?: number;
tempdir?: string;
version?: string;
info?: {
version: string,
command: string,
start_time: string
};
}

export function initGuest(context: vscode.ExtensionContext): void {
Expand All @@ -45,7 +53,7 @@ export function initGuest(context: vscode.ExtensionContext): void {
const sessionStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 1000);
sessionStatusBarItem.command = 'r.attachActiveGuest';
sessionStatusBarItem.text = 'Guest R: (not attached)';
sessionStatusBarItem.tooltip = 'Attach to Host Terminal';
sessionStatusBarItem.tooltip = 'Click to attach to host terminal';
sessionStatusBarItem.show();
context.subscriptions.push(
sessionStatusBarItem,
Expand All @@ -58,6 +66,7 @@ export function initGuest(context: vscode.ExtensionContext): void {
export function detachGuest(): void {
console.info('[Guest Service] detach guest from workspace');
sessionStatusBarItem.text = 'Guest R: (not attached)';
sessionStatusBarItem.tooltip = 'Click to attach to host terminal';
guestGlobalenv = undefined;
rWorkspace?.refresh();
}
Expand Down Expand Up @@ -96,8 +105,8 @@ export async function updateGuestRequest(file: string, force: boolean = false):
guestPid = String(request.pid);
guestPlotView = String(request.plot);
console.info(`[updateGuestRequest] attach PID: ${guestPid}`);
sessionStatusBarItem.text = `Guest R: ${guestPid}`;
sessionStatusBarItem.show();
sessionStatusBarItem.text = `Guest R ${rVer}: ${guestPid}`;
sessionStatusBarItem.tooltip = `${info.version}\nProcess ID: ${guestPid}\nCommand: ${info.command}\nStart time: ${info.start_time}\nClick to attach to host terminal.`;
break;
}
case 'browser': {
Expand Down Expand Up @@ -125,8 +134,12 @@ export async function updateGuestRequest(file: string, force: boolean = false):
} else {
guestPid = String(request.pid);
guestPlotView = String(request.plot);
rVer = String(request.version);
info = request.info;

console.info(`[updateGuestRequest] attach PID: ${guestPid}`);
sessionStatusBarItem.text = `Guest R: ${guestPid}`;
sessionStatusBarItem.text = `Guest R ${rVer}: ${guestPid}`;
sessionStatusBarItem.tooltip = `${info.version}\nProcess ID: ${guestPid}\nCommand: ${info.command}\nStart time: ${info.start_time}\nClick to attach to host terminal.`;
sessionStatusBarItem.show();
}
}
Expand Down
7 changes: 6 additions & 1 deletion src/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ let requestTimeStamp: number;
let responseTimeStamp: number;
export let sessionDir: string;
export let workingDir: string;
let rVer: string;
let pid: string;
let info: any;
export let globalenvFile: string;
let globalenvLockFile: string;
let globalenvTimeStamp: number;
Expand Down Expand Up @@ -733,12 +735,15 @@ async function updateRequest(sessionStatusBarItem: StatusBarItem) {
break;
}
case 'attach': {
rVer = String(request.version);
pid = String(request.pid);
info = request.info;
sessionDir = path.join(request.tempdir, 'vscode-R');
workingDir = request.wd;
plotView = String(request.plot);
console.info(`[updateRequest] attach PID: ${pid}`);
sessionStatusBarItem.text = `R: ${pid}`;
sessionStatusBarItem.text = `R ${rVer}: ${pid}`;
sessionStatusBarItem.tooltip = `${info.version}\nProcess ID: ${pid}\nCommand: ${info.command}\nStart time: ${info.start_time}\nClick to attach to active terminal.`;
sessionStatusBarItem.show();
updateSessionWatcher();
purgeAddinPickerItems();
Expand Down

0 comments on commit 28bb068

Please sign in to comment.