Skip to content

Commit f060180

Browse files
committed
Adds detach for each view to ... menu
Adds detach all and regroup all to `...` menu
1 parent 6c80ed7 commit f060180

File tree

2 files changed

+106
-20
lines changed

2 files changed

+106
-20
lines changed

package.json

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8215,6 +8215,16 @@
82158215
"icon": "$(refresh)",
82168216
"enablement": "!gitlens:views:scm:grouped:welcome"
82178217
},
8218+
{
8219+
"command": "gitlens.views.scm.grouped.detachAll",
8220+
"title": "Detach All Views",
8221+
"enablement": "!gitlens:views:scm:grouped:welcome"
8222+
},
8223+
{
8224+
"command": "gitlens.views.scm.grouped.regroupAll",
8225+
"title": "Regroup All Views",
8226+
"enablement": "!gitlens:views:scm:grouped:welcome"
8227+
},
82188228
{
82198229
"command": "gitlens.views.scm.grouped.branches",
82208230
"title": "Branches",
@@ -11992,6 +12002,14 @@
1199212002
"command": "gitlens.views.scm.grouped.refresh",
1199312003
"when": "false"
1199412004
},
12005+
{
12006+
"command": "gitlens.views.scm.grouped.detachAll",
12007+
"when": "false"
12008+
},
12009+
{
12010+
"command": "gitlens.views.scm.grouped.regroupAll",
12011+
"when": "false"
12012+
},
1199512013
{
1199612014
"command": "gitlens.views.scm.grouped.branches",
1199712015
"when": "false"
@@ -14057,6 +14075,11 @@
1405714075
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.commits && gitlens:views:scm:grouped:view == commits && !gitlens:views:scm:grouped:welcome",
1405814076
"group": "navigation@1"
1405914077
},
14078+
{
14079+
"command": "gitlens.views.scm.grouped.commits.detach",
14080+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.commits",
14081+
"group": "2_gitlens@1"
14082+
},
1406014083
{
1406114084
"command": "gitlens.views.scm.grouped.commits.regroup",
1406214085
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.commits",
@@ -14073,6 +14096,11 @@
1407314096
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.branches && gitlens:views:scm:grouped:view == branches && !gitlens:views:scm:grouped:welcome",
1407414097
"group": "navigation@2"
1407514098
},
14099+
{
14100+
"command": "gitlens.views.scm.grouped.branches.detach",
14101+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.branches",
14102+
"group": "2_gitlens@2"
14103+
},
1407614104
{
1407714105
"command": "gitlens.views.scm.grouped.branches.regroup",
1407814106
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.branches",
@@ -14089,6 +14117,11 @@
1408914117
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.remotes && gitlens:views:scm:grouped:view == remotes && !gitlens:views:scm:grouped:welcome",
1409014118
"group": "navigation@3"
1409114119
},
14120+
{
14121+
"command": "gitlens.views.scm.grouped.remotes.detach",
14122+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.remotes",
14123+
"group": "2_gitlens@3"
14124+
},
1409214125
{
1409314126
"command": "gitlens.views.scm.grouped.remotes.regroup",
1409414127
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.remotes",
@@ -14105,6 +14138,11 @@
1410514138
"when": "!gitlens:hasVirtualFolders && view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.stashes && gitlens:views:scm:grouped:view == stashes && !gitlens:views:scm:grouped:welcome",
1410614139
"group": "navigation@4"
1410714140
},
14141+
{
14142+
"command": "gitlens.views.scm.grouped.stashes.detach",
14143+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.stashes",
14144+
"group": "2_gitlens@4"
14145+
},
1410814146
{
1410914147
"command": "gitlens.views.scm.grouped.stashes.regroup",
1411014148
"when": "!gitlens:hasVirtualFolders && view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.stashes",
@@ -14121,6 +14159,11 @@
1412114159
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.tags && gitlens:views:scm:grouped:view == tags && !gitlens:views:scm:grouped:welcome",
1412214160
"group": "navigation@5"
1412314161
},
14162+
{
14163+
"command": "gitlens.views.scm.grouped.tags.detach",
14164+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.tags",
14165+
"group": "2_gitlens@5"
14166+
},
1412414167
{
1412514168
"command": "gitlens.views.scm.grouped.tags.regroup",
1412614169
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.tags",
@@ -14137,6 +14180,11 @@
1413714180
"when": "!gitlens:hasVirtualFolders && gitlens:plus:enabled && view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.worktrees && gitlens:views:scm:grouped:view == worktrees && !gitlens:views:scm:grouped:welcome",
1413814181
"group": "navigation@6"
1413914182
},
14183+
{
14184+
"command": "gitlens.views.scm.grouped.worktrees.detach",
14185+
"when": "!gitlens:hasVirtualFolders && gitlens:plus:enabled && view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.worktrees",
14186+
"group": "2_gitlens@6"
14187+
},
1414014188
{
1414114189
"command": "gitlens.views.scm.grouped.worktrees.regroup",
1414214190
"when": "!gitlens:hasVirtualFolders && gitlens:plus:enabled && view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.worktrees",
@@ -14153,6 +14201,11 @@
1415314201
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.contributors && gitlens:views:scm:grouped:view == contributors && !gitlens:views:scm:grouped:welcome",
1415414202
"group": "navigation@7"
1415514203
},
14204+
{
14205+
"command": "gitlens.views.scm.grouped.contributors.detach",
14206+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.contributors",
14207+
"group": "2_gitlens@7"
14208+
},
1415614209
{
1415714210
"command": "gitlens.views.scm.grouped.contributors.regroup",
1415814211
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.contributors",
@@ -14169,6 +14222,11 @@
1416914222
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.repositories && gitlens:views:scm:grouped:view == repositories && !gitlens:views:scm:grouped:welcome",
1417014223
"group": "navigation@8"
1417114224
},
14225+
{
14226+
"command": "gitlens.views.scm.grouped.repositories.detach",
14227+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.repositories",
14228+
"group": "2_gitlens@8"
14229+
},
1417214230
{
1417314231
"command": "gitlens.views.scm.grouped.repositories.regroup",
1417414232
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.repositories",
@@ -14185,6 +14243,11 @@
1418514243
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.searchAndCompare && gitlens:views:scm:grouped:view == searchAndCompare && !gitlens:views:scm:grouped:welcome",
1418614244
"group": "navigation@9"
1418714245
},
14246+
{
14247+
"command": "gitlens.views.scm.grouped.searchAndCompare.detach",
14248+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.searchAndCompare",
14249+
"group": "2_gitlens@9"
14250+
},
1418814251
{
1418914252
"command": "gitlens.views.scm.grouped.searchAndCompare.regroup",
1419014253
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.searchAndCompare",
@@ -14201,6 +14264,11 @@
1420114264
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.launchpad && gitlens:views:scm:grouped:view == launchpad && !gitlens:views:scm:grouped:welcome",
1420214265
"group": "navigation@10"
1420314266
},
14267+
{
14268+
"command": "gitlens.views.scm.grouped.launchpad.detach",
14269+
"when": "view == gitlens.views.scm.grouped && config.gitlens.views.scm.grouped.views.launchpad",
14270+
"group": "2_gitlens@10"
14271+
},
1420414272
{
1420514273
"command": "gitlens.views.scm.grouped.launchpad.regroup",
1420614274
"when": "view == gitlens.views.scm.grouped && !config.gitlens.views.scm.grouped.views.launchpad",
@@ -14211,6 +14279,16 @@
1421114279
"when": "view == gitlens.views.scm.grouped",
1421214280
"group": "navigation@98"
1421314281
},
14282+
{
14283+
"command": "gitlens.views.scm.grouped.detachAll",
14284+
"when": "view == gitlens.views.scm.grouped",
14285+
"group": "9_gitlens@98"
14286+
},
14287+
{
14288+
"command": "gitlens.views.scm.grouped.regroupAll",
14289+
"when": "view == gitlens.views.scm.grouped",
14290+
"group": "9_gitlens@99"
14291+
},
1421414292
{
1421514293
"command": "gitlens.views.home.previewFeedback",
1421614294
"when": "view == gitlens.views.home",

src/views/views.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,19 @@ import { ViewCommands } from './viewCommands';
4949
import { WorkspacesView } from './workspacesView';
5050
import { WorktreesView } from './worktreesView';
5151

52+
const defaultScmGroupedViews: Record<GroupableTreeViewTypes, boolean> = Object.freeze({
53+
commits: true,
54+
branches: true,
55+
remotes: true,
56+
stashes: true,
57+
tags: true,
58+
worktrees: true,
59+
contributors: true,
60+
repositories: false,
61+
searchAndCompare: true,
62+
launchpad: false,
63+
});
64+
5265
export class Views implements Disposable {
5366
private readonly _disposable: Disposable;
5467

@@ -257,6 +270,10 @@ export class Views implements Disposable {
257270

258271
executeCommand(`gitlens.views.${this._scmGroupedView.view.type}.refresh` as Commands);
259272
}),
273+
registerCommand('gitlens.views.scm.grouped.detachAll', () => updateScmGroupedViewsInConfig(new Set())),
274+
registerCommand('gitlens.views.scm.grouped.regroupAll', () =>
275+
updateScmGroupedViewsInConfig(getGroupedViews(defaultScmGroupedViews)),
276+
),
260277

261278
registerCommand('gitlens.views.scm.grouped.welcome.dismiss', () => {
262279
this._welcomeDismissed = true;
@@ -809,28 +826,10 @@ export class Views implements Disposable {
809826
}
810827
}
811828

812-
const defaultScmGroupedViews: Record<GroupableTreeViewTypes, boolean> = Object.freeze({
813-
commits: true,
814-
branches: true,
815-
remotes: true,
816-
stashes: true,
817-
tags: true,
818-
worktrees: true,
819-
contributors: true,
820-
repositories: false,
821-
searchAndCompare: true,
822-
launchpad: false,
823-
});
824-
825-
function getScmGroupedViewsFromConfig() {
826-
const groupedViewsCfg = {
827-
...defaultScmGroupedViews,
828-
...configuration.get('views.scm.grouped.views', undefined, defaultScmGroupedViews),
829-
};
830-
829+
function getGroupedViews(cfg: Record<GroupableTreeViewTypes, boolean>) {
831830
const groupedViews = new Set<GroupableTreeViewTypes>();
832831

833-
for (const [key, value] of Object.entries(groupedViewsCfg) as [GroupableTreeViewTypes, boolean][]) {
832+
for (const [key, value] of Object.entries(cfg) as [GroupableTreeViewTypes, boolean][]) {
834833
if (value) {
835834
groupedViews.add(key);
836835
}
@@ -840,6 +839,15 @@ function getScmGroupedViewsFromConfig() {
840839
return groupedViews;
841840
}
842841

842+
function getScmGroupedViewsFromConfig() {
843+
const groupedViewsCfg = {
844+
...defaultScmGroupedViews,
845+
...configuration.get('views.scm.grouped.views', undefined, defaultScmGroupedViews),
846+
};
847+
848+
return getGroupedViews(groupedViewsCfg);
849+
}
850+
843851
async function updateScmGroupedViewsInConfig(groupedViews: Set<GroupableTreeViewTypes>) {
844852
await configuration.updateEffective('views.scm.grouped.views', {
845853
commits: groupedViews.has('commits'),

0 commit comments

Comments
 (0)