Skip to content

Commit

Permalink
Explicit workspace behaviour (#1317)
Browse files Browse the repository at this point in the history
* Explicit workspace behaviour

- Always show workspace viewer
- Fallback message when session watcher is disabled
- Don't error when calling view without an active workspace viewer

* Toggle provider

don't register the tree data provider unless session watcher enabled

* Hide buttons

Hide view buttons when session viewer is disabled
  • Loading branch information
ElianHugh authored Mar 2, 2023
1 parent a2c245f commit 83aaf2a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 18 deletions.
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,7 @@
"id": "workspaceViewer",
"name": "Workspace",
"icon": "./images/Rlogo.svg",
"contextualTitle": "R",
"when": "r.WorkspaceViewer:show"
"contextualTitle": "R"
},
{
"id": "rHelpPages",
Expand All @@ -117,7 +116,8 @@
"viewsWelcome": [
{
"view": "workspaceViewer",
"contents": "R workspace is empty."
"when": "!r.WorkspaceViewer:show",
"contents": "R workspace viewer requires that the [session watcher be enabled](/~https://github.com/REditorSupport/vscode-R/wiki/R-Session-watcher)."
},
{
"view": "rHelpPages",
Expand Down Expand Up @@ -1246,22 +1246,22 @@
{
"command": "r.workspaceViewer.load",
"group": "navigation@0",
"when": "view == workspaceViewer && !r.liveShare:isGuest"
"when": "r.WorkspaceViewer:show && view == workspaceViewer && !r.liveShare:isGuest"
},
{
"command": "r.workspaceViewer.save",
"group": "navigation@1",
"when": "view == workspaceViewer && !r.liveShare:isGuest"
"when": "r.WorkspaceViewer:show && view == workspaceViewer && !r.liveShare:isGuest"
},
{
"command": "r.workspaceViewer.clear",
"group": "navigation@2",
"when": "view == workspaceViewer"
"when": "r.WorkspaceViewer:show && view == workspaceViewer"
},
{
"command": "r.workspaceViewer.refreshEntry",
"group": "navigation@3",
"when": "view == workspaceViewer"
"when": "r.WorkspaceViewer:show && view == workspaceViewer"
},
{
"command": "r.helpPanel.showQuickPick",
Expand Down
12 changes: 4 additions & 8 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<apiImp
extensionContext = context;

// assign session watcher setting to global variable
enableSessionWatcher = util.config().get<boolean>('sessionWatcher');
enableSessionWatcher = util.config().get<boolean>('sessionWatcher') ?? false;
rmdPreviewManager = new rmarkdown.RMarkdownPreviewManager();
rmdKnitManager = new rmarkdown.RMarkdownKnitManager();

Expand Down Expand Up @@ -133,8 +133,8 @@ export async function activate(context: vscode.ExtensionContext): Promise<apiImp

// workspace viewer
'r.workspaceViewer.refreshEntry': () => rWorkspace?.refresh(),
'r.workspaceViewer.view': (node: workspaceViewer.GlobalEnvItem) => node.label && workspaceViewer.viewItem(node.label),
'r.workspaceViewer.remove': (node: workspaceViewer.GlobalEnvItem) => node.label && workspaceViewer.removeItem(node.label),
'r.workspaceViewer.view': (node: workspaceViewer.GlobalEnvItem) => node?.label && workspaceViewer.viewItem(node.label),
'r.workspaceViewer.remove': (node: workspaceViewer.GlobalEnvItem) => node?.label && workspaceViewer.removeItem(node.label),
'r.workspaceViewer.clear': workspaceViewer.clearWorkspace,
'r.workspaceViewer.load': workspaceViewer.loadWorkspace,
'r.workspaceViewer.save': workspaceViewer.saveWorkspace,
Expand Down Expand Up @@ -242,17 +242,13 @@ export async function activate(context: vscode.ExtensionContext): Promise<apiImp
// creates a custom context value for the workspace view
// only shows view when session watcher is enabled
rWorkspace = new workspaceViewer.WorkspaceDataProvider();
vscode.window.registerTreeDataProvider(
'workspaceViewer',
rWorkspace
);
void vscode.commands.executeCommand('setContext', 'r.WorkspaceViewer:show', enableSessionWatcher);

// if session watcher is active, register dyamic completion provider
const liveTriggerCharacters = ['', '[', '(', ',', '$', '@', '"', '\''];
vscode.languages.registerCompletionItemProvider(['r', 'rmd'], new completions.LiveCompletionItemProvider(), ...liveTriggerCharacters);
}

void vscode.commands.executeCommand('setContext', 'r.WorkspaceViewer:show', enableSessionWatcher);

return rExtension;
}
8 changes: 5 additions & 3 deletions src/workspaceViewer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ export class WorkspaceDataProvider implements TreeDataProvider<TreeItem> {
await node.showQuickPick();
})
);

vscode.window.registerTreeDataProvider('workspaceViewer', this);
}

public getTreeItem(element: TreeItem): TreeItem {
Expand Down Expand Up @@ -172,7 +174,7 @@ export class WorkspaceDataProvider implements TreeDataProvider<TreeItem> {
}

class PackageItem extends TreeItem {
public static command : string = 'r.workspaceViewer.package.showQuickPick';
public static command: string = 'r.workspaceViewer.package.showQuickPick';
public label?: string;
public name: string;
public pkgNode?: PackageNode;
Expand Down Expand Up @@ -258,7 +260,7 @@ export class GlobalEnvItem extends TreeItem {
}

private getTooltip(
label:string,
label: string,
rClass: string,
size?: number,
treeLevel?: number
Expand Down Expand Up @@ -291,7 +293,7 @@ export class GlobalEnvItem extends TreeItem {
of what elements can have have 'child' nodes os not. It can be expanded
in the futere for more tree levels.*/
private static setCollapsibleState(treeLevel: number, type: string, str: string): vscode.TreeItemCollapsibleState {
if (treeLevel === TreeLevel.Parent && collapsibleTypes.includes(type) && str.includes('\n')){
if (treeLevel === TreeLevel.Parent && collapsibleTypes.includes(type) && str.includes('\n')) {
return TreeItemCollapsibleState.Collapsed;
} else {
return TreeItemCollapsibleState.None;
Expand Down

0 comments on commit 83aaf2a

Please sign in to comment.