'use strict';
|
|
import { TraceLevel } from './logger';
|
|
|
|
export interface Config {
|
|
autolinks: AutolinkReference[] | null;
|
|
blame: {
|
|
avatars: boolean;
|
|
compact: boolean;
|
|
dateFormat: string | null;
|
|
format: string;
|
|
heatmap: {
|
|
enabled: boolean;
|
|
location: 'left' | 'right';
|
|
};
|
|
highlight: {
|
|
enabled: boolean;
|
|
locations: BlameHighlightLocations[];
|
|
};
|
|
ignoreWhitespace: boolean;
|
|
separateLines: boolean;
|
|
toggleMode: AnnotationsToggleMode;
|
|
};
|
|
changes: {
|
|
locations: ChangesLocations[];
|
|
toggleMode: AnnotationsToggleMode;
|
|
};
|
|
codeLens: CodeLensConfig;
|
|
currentLine: {
|
|
dateFormat: string | null;
|
|
enabled: boolean;
|
|
format: string;
|
|
pullRequests: {
|
|
enabled: boolean;
|
|
};
|
|
scrollable: boolean;
|
|
};
|
|
debug: boolean;
|
|
defaultDateFormat: string | null;
|
|
defaultDateShortFormat: string | null;
|
|
defaultDateSource: DateSource;
|
|
defaultDateStyle: DateStyle;
|
|
defaultGravatarsStyle: GravatarDefaultStyle;
|
|
gitCommands: {
|
|
closeOnFocusOut: boolean;
|
|
search: {
|
|
matchAll: boolean;
|
|
matchCase: boolean;
|
|
matchRegex: boolean;
|
|
showResultsInView: boolean;
|
|
};
|
|
skipConfirmations: string[];
|
|
};
|
|
heatmap: {
|
|
ageThreshold: number;
|
|
coldColor: string;
|
|
hotColor: string;
|
|
toggleMode: AnnotationsToggleMode;
|
|
};
|
|
hovers: {
|
|
annotations: {
|
|
changes: boolean;
|
|
details: boolean;
|
|
enabled: boolean;
|
|
over: 'line' | 'annotation';
|
|
};
|
|
autolinks: {
|
|
enabled: boolean;
|
|
enhanced: boolean;
|
|
};
|
|
currentLine: {
|
|
changes: boolean;
|
|
details: boolean;
|
|
enabled: boolean;
|
|
over: 'line' | 'annotation';
|
|
};
|
|
avatars: boolean;
|
|
avatarSize: number;
|
|
changesDiff: 'line' | 'hunk';
|
|
detailsMarkdownFormat: string;
|
|
enabled: boolean;
|
|
pullRequests: {
|
|
enabled: boolean;
|
|
};
|
|
};
|
|
insiders: boolean;
|
|
keymap: KeyMap;
|
|
liveshare: {
|
|
allowGuestAccess: boolean;
|
|
};
|
|
menus: boolean | MenuConfig;
|
|
mode: {
|
|
active: string;
|
|
statusBar: {
|
|
enabled: boolean;
|
|
alignment: 'left' | 'right';
|
|
};
|
|
};
|
|
modes: Record<string, ModeConfig>;
|
|
outputLevel: TraceLevel;
|
|
remotes: RemotesConfig[] | null;
|
|
showWhatsNewAfterUpgrades: boolean;
|
|
sortBranchesBy: BranchSorting;
|
|
sortTagsBy: TagSorting;
|
|
statusBar: {
|
|
alignment: 'left' | 'right';
|
|
command: StatusBarCommand;
|
|
dateFormat: string | null;
|
|
enabled: boolean;
|
|
format: string;
|
|
reduceFlicker: boolean;
|
|
};
|
|
strings: {
|
|
codeLens: {
|
|
unsavedChanges: {
|
|
recentChangeAndAuthors: string;
|
|
recentChangeOnly: string;
|
|
authorsOnly: string;
|
|
};
|
|
};
|
|
};
|
|
views: ViewsConfig;
|
|
advanced: AdvancedConfig;
|
|
}
|
|
|
|
export enum AnnotationsToggleMode {
|
|
File = 'file',
|
|
Window = 'window',
|
|
}
|
|
|
|
export interface AutolinkReference {
|
|
prefix: string;
|
|
url: string;
|
|
title?: string;
|
|
alphanumeric?: boolean;
|
|
ignoreCase?: boolean;
|
|
}
|
|
|
|
export enum BlameHighlightLocations {
|
|
Gutter = 'gutter',
|
|
Line = 'line',
|
|
Overview = 'overview',
|
|
}
|
|
|
|
export enum BranchSorting {
|
|
NameDesc = 'name:desc',
|
|
NameAsc = 'name:asc',
|
|
DateDesc = 'date:desc',
|
|
DateAsc = 'date:asc',
|
|
}
|
|
|
|
export enum ChangesLocations {
|
|
Gutter = 'gutter',
|
|
Overview = 'overview',
|
|
}
|
|
|
|
export enum CodeLensCommand {
|
|
DiffWithPrevious = 'gitlens.diffWithPrevious',
|
|
RevealCommitInView = 'gitlens.revealCommitInView',
|
|
ShowCommitsInView = 'gitlens.showCommitsInView',
|
|
ShowQuickCommitDetails = 'gitlens.showQuickCommitDetails',
|
|
ShowQuickCommitFileDetails = 'gitlens.showQuickCommitFileDetails',
|
|
ShowQuickCurrentBranchHistory = 'gitlens.showQuickRepoHistory',
|
|
ShowQuickFileHistory = 'gitlens.showQuickFileHistory',
|
|
ToggleFileBlame = 'gitlens.toggleFileBlame',
|
|
}
|
|
|
|
export enum CodeLensScopes {
|
|
Document = 'document',
|
|
Containers = 'containers',
|
|
Blocks = 'blocks',
|
|
}
|
|
|
|
export enum CustomRemoteType {
|
|
Bitbucket = 'Bitbucket',
|
|
BitbucketServer = 'BitbucketServer',
|
|
Custom = 'Custom',
|
|
GitHub = 'GitHub',
|
|
GitLab = 'GitLab',
|
|
}
|
|
|
|
export enum DateSource {
|
|
Authored = 'authored',
|
|
Committed = 'committed',
|
|
}
|
|
|
|
export enum DateStyle {
|
|
Absolute = 'absolute',
|
|
Relative = 'relative',
|
|
}
|
|
|
|
export enum FileAnnotationType {
|
|
Blame = 'blame',
|
|
Changes = 'changes',
|
|
Heatmap = 'heatmap',
|
|
}
|
|
|
|
export enum GravatarDefaultStyle {
|
|
Faces = 'wavatar',
|
|
Geometric = 'identicon',
|
|
Monster = 'monsterid',
|
|
MysteryPerson = 'mp',
|
|
Retro = 'retro',
|
|
Robot = 'robohash',
|
|
}
|
|
|
|
export enum KeyMap {
|
|
Alternate = 'alternate',
|
|
Chorded = 'chorded',
|
|
None = 'none',
|
|
}
|
|
|
|
export enum StatusBarCommand {
|
|
DiffWithPrevious = 'gitlens.diffWithPrevious',
|
|
DiffWithWorking = 'gitlens.diffWithWorking',
|
|
RevealCommitInView = 'gitlens.revealCommitInView',
|
|
ShowCommitsInView = 'gitlens.showCommitsInView',
|
|
ShowQuickCommitDetails = 'gitlens.showQuickCommitDetails',
|
|
ShowQuickCommitFileDetails = 'gitlens.showQuickCommitFileDetails',
|
|
ShowQuickCurrentBranchHistory = 'gitlens.showQuickRepoHistory',
|
|
ShowQuickFileHistory = 'gitlens.showQuickFileHistory',
|
|
ToggleCodeLens = 'gitlens.toggleCodeLens',
|
|
ToggleFileBlame = 'gitlens.toggleFileBlame',
|
|
}
|
|
|
|
export enum TagSorting {
|
|
NameDesc = 'name:desc',
|
|
NameAsc = 'name:asc',
|
|
DateDesc = 'date:desc',
|
|
DateAsc = 'date:asc',
|
|
}
|
|
|
|
export enum ViewBranchesLayout {
|
|
List = 'list',
|
|
Tree = 'tree',
|
|
}
|
|
|
|
export enum ViewFilesLayout {
|
|
Auto = 'auto',
|
|
List = 'list',
|
|
Tree = 'tree',
|
|
}
|
|
|
|
export enum ViewLocation {
|
|
Explorer = 'explorer',
|
|
GitLens = 'gitlens',
|
|
SourceControl = 'scm',
|
|
}
|
|
|
|
export enum ViewShowBranchComparison {
|
|
Branch = 'branch',
|
|
Working = 'working',
|
|
}
|
|
|
|
export interface AdvancedConfig {
|
|
abbreviatedShaLength: number;
|
|
blame: {
|
|
customArguments: string[] | null;
|
|
delayAfterEdit: number;
|
|
sizeThresholdAfterEdit: number;
|
|
};
|
|
caching: {
|
|
enabled: boolean;
|
|
};
|
|
fileHistoryFollowsRenames: boolean;
|
|
fileHistoryShowAllBranches: boolean;
|
|
maxListItems: number;
|
|
maxSearchItems: number;
|
|
messages: {
|
|
suppressCommitHasNoPreviousCommitWarning: boolean;
|
|
suppressCommitNotFoundWarning: boolean;
|
|
suppressFileNotUnderSourceControlWarning: boolean;
|
|
suppressGitDisabledWarning: boolean;
|
|
suppressGitVersionWarning: boolean;
|
|
suppressLineUncommittedWarning: boolean;
|
|
suppressNoRepositoryWarning: boolean;
|
|
suppressSupportGitLensNotification: boolean;
|
|
};
|
|
quickPick: {
|
|
closeOnFocusOut: boolean;
|
|
};
|
|
repositorySearchDepth: number;
|
|
similarityThreshold: number | null;
|
|
useSymmetricDifferenceNotation: boolean;
|
|
}
|
|
|
|
export interface CodeLensConfig {
|
|
authors: {
|
|
enabled: boolean;
|
|
command: CodeLensCommand | false;
|
|
};
|
|
enabled: boolean;
|
|
includeSingleLineSymbols: boolean;
|
|
recentChange: {
|
|
enabled: boolean;
|
|
command: CodeLensCommand | false;
|
|
};
|
|
scopes: CodeLensScopes[];
|
|
scopesByLanguage: CodeLensLanguageScope[] | null;
|
|
symbolScopes: string[];
|
|
}
|
|
|
|
export interface CodeLensLanguageScope {
|
|
language: string | undefined;
|
|
scopes?: CodeLensScopes[];
|
|
symbolScopes?: string[];
|
|
}
|
|
|
|
export interface CompareViewConfig {
|
|
avatars: boolean;
|
|
enabled: boolean;
|
|
files: ViewsFilesConfig;
|
|
location: ViewLocation;
|
|
}
|
|
|
|
export interface FileHistoryViewConfig {
|
|
avatars: boolean;
|
|
enabled: boolean;
|
|
location: ViewLocation;
|
|
}
|
|
|
|
export interface LineHistoryViewConfig {
|
|
avatars: boolean;
|
|
enabled: boolean;
|
|
location: ViewLocation;
|
|
}
|
|
|
|
export interface MenuConfig {
|
|
editor:
|
|
| false
|
|
| {
|
|
blame: boolean;
|
|
clipboard: boolean;
|
|
compare: boolean;
|
|
details: boolean;
|
|
history: boolean;
|
|
remote: boolean;
|
|
};
|
|
editorGroup:
|
|
| false
|
|
| {
|
|
compare: boolean;
|
|
history: boolean;
|
|
};
|
|
editorTab:
|
|
| false
|
|
| {
|
|
clipboard: boolean;
|
|
compare: boolean;
|
|
history: boolean;
|
|
remote: boolean;
|
|
};
|
|
explorer:
|
|
| false
|
|
| {
|
|
clipboard: boolean;
|
|
compare: boolean;
|
|
history: boolean;
|
|
remote: boolean;
|
|
};
|
|
scm:
|
|
| false
|
|
| {
|
|
authors: boolean;
|
|
};
|
|
scmGroupInline:
|
|
| false
|
|
| {
|
|
stash: boolean;
|
|
};
|
|
scmGroup:
|
|
| false
|
|
| {
|
|
compare: boolean;
|
|
openClose: boolean;
|
|
stash: boolean;
|
|
};
|
|
scmItem:
|
|
| false
|
|
| {
|
|
clipboard: boolean;
|
|
compare: boolean;
|
|
history: boolean;
|
|
remote: boolean;
|
|
stash: boolean;
|
|
};
|
|
}
|
|
|
|
export interface ModeConfig {
|
|
name: string;
|
|
statusBarItemName?: string;
|
|
description?: string;
|
|
annotations?: 'blame' | 'changes' | 'heatmap';
|
|
codeLens?: boolean;
|
|
currentLine?: boolean;
|
|
hovers?: boolean;
|
|
statusBar?: boolean;
|
|
views?: boolean;
|
|
}
|
|
|
|
export interface RemotesConfig {
|
|
domain: string;
|
|
name?: string;
|
|
protocol?: string;
|
|
type: CustomRemoteType;
|
|
urls?: RemotesUrlsConfig;
|
|
}
|
|
|
|
export interface RemotesUrlsConfig {
|
|
repository: string;
|
|
branches: string;
|
|
branch: string;
|
|
commit: string;
|
|
file: string;
|
|
fileInBranch: string;
|
|
fileInCommit: string;
|
|
fileLine: string;
|
|
fileRange: string;
|
|
}
|
|
|
|
export interface RepositoriesViewConfig {
|
|
autoRefresh: boolean;
|
|
autoReveal: boolean;
|
|
avatars: boolean;
|
|
branches: {
|
|
layout: ViewBranchesLayout;
|
|
};
|
|
compact: boolean;
|
|
enabled: boolean;
|
|
files: ViewsFilesConfig;
|
|
includeWorkingTree: boolean;
|
|
location: ViewLocation;
|
|
showBranchComparison: false | ViewShowBranchComparison;
|
|
showTrackingBranch: boolean;
|
|
}
|
|
|
|
export interface SearchViewConfig {
|
|
avatars: boolean;
|
|
enabled: boolean;
|
|
files: ViewsFilesConfig;
|
|
location: ViewLocation;
|
|
}
|
|
|
|
export interface ViewsConfig {
|
|
fileHistory: FileHistoryViewConfig;
|
|
commitFileDescriptionFormat: string;
|
|
commitFileFormat: string;
|
|
commitDescriptionFormat: string;
|
|
commitFormat: string;
|
|
compare: CompareViewConfig;
|
|
defaultItemLimit: number;
|
|
lineHistory: LineHistoryViewConfig;
|
|
pageItemLimit: number;
|
|
repositories: RepositoriesViewConfig;
|
|
search: SearchViewConfig;
|
|
showRelativeDateMarkers: boolean;
|
|
stashFileDescriptionFormat: string;
|
|
stashFileFormat: string;
|
|
stashDescriptionFormat: string;
|
|
stashFormat: string;
|
|
statusFileDescriptionFormat: string;
|
|
statusFileFormat: string;
|
|
}
|
|
|
|
export interface ViewsFilesConfig {
|
|
compact: boolean;
|
|
layout: ViewFilesLayout;
|
|
threshold: number;
|
|
}
|
|
|
|
export const viewKeys: (keyof Pick<
|
|
Config['views'],
|
|
'repositories' | 'fileHistory' | 'lineHistory' | 'compare' | 'search'
|
|
>)[] = ['repositories', 'fileHistory', 'lineHistory', 'compare', 'search'];
|