I'm always frustrated when running R --no-save --no-restore from the integrated terminal has the different behavior from the extension commands R: Create R terminal and R: Attach Active Terminal (click R: not attach button in the bottom status bar).
Currently, the whole extension always uses process.env to access environment variables. However, these environment variables belongs to the vscode process, and are inherited from the parent process which launches vscode process. Multiple vscode instances inherit process.env from the first vscode instance if --user-data-dir is not used. This makes process.env clutter.
For example, if one use conda or nix, then to make vscode see all environment variables exported by conda or nix, one has to activate conda or nix in a shell, and then launch vscode from that shell. Otherwise, the conda and nix environment variables are not in process.env. Currently, vscode-R provide configurations r.rpath.linux and r.rterm.linux and r.libPaths. However, r.libPaths is passed to VSCR_LIB_PATHS instead of the standard R_LIB_PATHS which is not used by R: Create R terminal and R: Attach Active Terminal. I think it will better to pass r.libPaths configuration to the standard R_LIB_PATHS.
A better solution would be to detect conda environment and default.nix file and parse their environment variables. Then add these environment variables to vscode.ExtensionContext.environmentVariableCollection in the scope of current workspace.
I'm always frustrated when running
R --no-save --no-restorefrom the integrated terminal has the different behavior from the extension commandsR: Create R terminalandR: Attach Active Terminal(clickR: not attachbutton in the bottom status bar).Currently, the whole extension always uses
process.envto access environment variables. However, these environment variables belongs to thevscodeprocess, and are inherited from the parent process which launchesvscodeprocess. Multiplevscodeinstances inheritprocess.envfrom the firstvscodeinstance if--user-data-diris not used. This makesprocess.envclutter.For example, if one use
condaornix, then to makevscodesee all environment variables exported bycondaornix, one has to activatecondaornixin a shell, and then launchvscodefrom that shell. Otherwise, thecondaandnixenvironment variables are not inprocess.env. Currently,vscode-Rprovide configurationsr.rpath.linuxandr.rterm.linuxandr.libPaths. However,r.libPathsis passed toVSCR_LIB_PATHSinstead of the standardR_LIB_PATHSwhich is not used byR: Create R terminalandR: Attach Active Terminal. I think it will better to passr.libPathsconfiguration to the standardR_LIB_PATHS.A better solution would be to detect
condaenvironment anddefault.nixfile and parse their environment variables. Then add these environment variables tovscode.ExtensionContext.environmentVariableCollectionin the scope of current workspace.