mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 04:49:35 +00:00
git submodule decorations
This commit is contained in:
parent
c84266207a
commit
3017bc0f9c
|
@ -951,6 +951,15 @@
|
|||
"dark": "#6c6cc4",
|
||||
"highContrast": "#6c6cc4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "gitDecoration.submoduleResourceForeground",
|
||||
"description": "%colors.submodule%",
|
||||
"defaults": {
|
||||
"light": "#1258a7",
|
||||
"dark": "#8db9e2",
|
||||
"highContrast": "#8db9e2"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -68,5 +68,6 @@
|
|||
"colors.deleted": "Color for deleted resources.",
|
||||
"colors.untracked": "Color for untracked resources.",
|
||||
"colors.ignored": "Color for ignored resources.",
|
||||
"colors.conflict": "Color for resources with conflicts."
|
||||
"colors.conflict": "Color for resources with conflicts.",
|
||||
"colors.submodule": "Color for submodule resources."
|
||||
}
|
|
@ -6,10 +6,12 @@
|
|||
'use strict';
|
||||
|
||||
import { window, workspace, Uri, Disposable, Event, EventEmitter, DecorationData, DecorationProvider, ThemeColor } from 'vscode';
|
||||
import * as path from 'path';
|
||||
import { Repository, GitResourceGroup, Status } from './repository';
|
||||
import { Model } from './model';
|
||||
import { debounce } from './decorators';
|
||||
import { filterEvent } from './util';
|
||||
import { Submodule } from './git';
|
||||
|
||||
class GitIgnoreDecorationProvider implements DecorationProvider {
|
||||
|
||||
|
@ -65,6 +67,14 @@ class GitIgnoreDecorationProvider implements DecorationProvider {
|
|||
|
||||
class GitDecorationProvider implements DecorationProvider {
|
||||
|
||||
private static SubmoduleDecorationData = {
|
||||
source: 'git.resource',
|
||||
title: 'Submodule',
|
||||
abbreviation: 'S',
|
||||
color: new ThemeColor('gitDecoration.submoduleResourceForeground'),
|
||||
priority: 1
|
||||
};
|
||||
|
||||
private readonly _onDidChangeDecorations = new EventEmitter<Uri[]>();
|
||||
readonly onDidChangeDecorations: Event<Uri[]> = this._onDidChangeDecorations.event;
|
||||
|
||||
|
@ -83,6 +93,7 @@ class GitDecorationProvider implements DecorationProvider {
|
|||
this.collectDecorationData(this.repository.indexGroup, newDecorations);
|
||||
this.collectDecorationData(this.repository.workingTreeGroup, newDecorations);
|
||||
this.collectDecorationData(this.repository.mergeGroup, newDecorations);
|
||||
this.collectSubmoduleDecorationData(newDecorations);
|
||||
|
||||
const uris = new Set([...this.decorations.keys()].concat([...newDecorations.keys()]));
|
||||
this.decorations = newDecorations;
|
||||
|
@ -101,6 +112,12 @@ class GitDecorationProvider implements DecorationProvider {
|
|||
});
|
||||
}
|
||||
|
||||
private collectSubmoduleDecorationData(bucket: Map<string, DecorationData>): void {
|
||||
for (const submodule of this.repository.submodules) {
|
||||
bucket.set(Uri.file(path.join(this.repository.root, submodule.path)).toString(), GitDecorationProvider.SubmoduleDecorationData);
|
||||
}
|
||||
}
|
||||
|
||||
provideDecoration(uri: Uri): DecorationData | undefined {
|
||||
return this.decorations.get(uri.toString());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue