mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-01-21 09:45:37 -05:00
Major refactor/rework -- many new features and breaking changes
Adds all-new, beautiful, highly customizable and themeable, file blame annotations Adds all-new configurability and themeability to the current line blame annotations Adds all-new configurability to the status bar blame information Adds all-new configurability over which commands are added to which menus via the `gitlens.advanced.menus` setting Adds better configurability over where Git code lens will be shown -- both by default and per language Adds an all-new `changes` (diff) hover annotation to the current line - provides instant access to the line's previous version Adds `Toggle Line Blame Annotations` command (`gitlens.toggleLineBlame`) - toggles the current line blame annotations on and off Adds `Show Line Blame Annotations` command (`gitlens.showLineBlame`) - shows the current line blame annotations Adds `Toggle File Blame Annotations` command (`gitlens.toggleFileBlame`) - toggles the file blame annotations on and off Adds `Show File Blame Annotations` command (`gitlens.showFileBlame`) - shows the file blame annotations Adds `Open File in Remote` command (`gitlens.openFileInRemote`) to the `editor/title` context menu Adds `Open Repo in Remote` command (`gitlens.openRepoInRemote`) to the `editor/title` context menu Changes the position of the `Open File in Remote` command (`gitlens.openFileInRemote`) in the context menus - now in the `navigation` group Changes the `Toggle Git Code Lens` command (`gitlens.toggleCodeLens`) to always toggle the Git code lens on and off Removes the on-demand `trailing` file blame annotations -- didn't work out and just ended up with a ton of visual noise Removes `Toggle Blame Annotations` command (`gitlens.toggleBlame`) - replaced by the `Toggle File Blame Annotations` command (`gitlens.toggleFileBlame`) Removes `Show Blame Annotations` command (`gitlens.showBlame`) - replaced by the `Show File Blame Annotations` command (`gitlens.showFileBlame`)
This commit is contained in:
@@ -7,13 +7,13 @@ import { Telemetry } from '../telemetry';
|
||||
export type Commands = 'gitlens.closeUnchangedFiles' | 'gitlens.copyMessageToClipboard' | 'gitlens.copyShaToClipboard' |
|
||||
'gitlens.diffDirectory' | 'gitlens.diffWithBranch' | 'gitlens.diffWithNext' | 'gitlens.diffWithPrevious' | 'gitlens.diffLineWithPrevious' | 'gitlens.diffWithWorking' | 'gitlens.diffLineWithWorking' |
|
||||
'gitlens.openChangedFiles' | 'gitlens.openBranchInRemote' | 'gitlens.openCommitInRemote' | 'gitlens.openFileInRemote' | 'gitlens.openInRemote' | 'gitlens.openRepoInRemote' |
|
||||
'gitlens.showBlame' | 'gitlens.showBlameHistory' | 'gitlens.showCommitSearch' | 'gitlens.showFileHistory' |
|
||||
'gitlens.showLastQuickPick' | 'gitlens.showQuickBranchHistory' |
|
||||
'gitlens.showBlameHistory' | 'gitlens.showCommitSearch' | 'gitlens.showFileBlame' | 'gitlens.showFileHistory' |
|
||||
'gitlens.showLastQuickPick' | 'gitlens.showLineBlame' | 'gitlens.showQuickBranchHistory' |
|
||||
'gitlens.showQuickCommitDetails' | 'gitlens.showQuickCommitFileDetails' |
|
||||
'gitlens.showQuickFileHistory' | 'gitlens.showQuickRepoHistory' |
|
||||
'gitlens.showQuickRepoStatus' | 'gitlens.showQuickStashList' |
|
||||
'gitlens.stashApply' | 'gitlens.stashDelete' | 'gitlens.stashSave' |
|
||||
'gitlens.toggleBlame' | 'gitlens.toggleCodeLens';
|
||||
'gitlens.toggleCodeLens' | 'gitlens.toggleFileBlame' | 'gitlens.toggleLineBlame';
|
||||
export const Commands = {
|
||||
CloseUnchangedFiles: 'gitlens.closeUnchangedFiles' as Commands,
|
||||
CopyMessageToClipboard: 'gitlens.copyMessageToClipboard' as Commands,
|
||||
@@ -31,7 +31,8 @@ export const Commands = {
|
||||
OpenFileInRemote: 'gitlens.openFileInRemote' as Commands,
|
||||
OpenInRemote: 'gitlens.openInRemote' as Commands,
|
||||
OpenRepoInRemote: 'gitlens.openRepoInRemote' as Commands,
|
||||
ShowBlame: 'gitlens.showBlame' as Commands,
|
||||
ShowFileBlame: 'gitlens.showFileBlame' as Commands,
|
||||
ShowLineBlame: 'gitlens.showLineBlame' as Commands,
|
||||
ShowBlameHistory: 'gitlens.showBlameHistory' as Commands,
|
||||
ShowCommitSearch: 'gitlens.showCommitSearch' as Commands,
|
||||
ShowFileHistory: 'gitlens.showFileHistory' as Commands,
|
||||
@@ -46,7 +47,8 @@ export const Commands = {
|
||||
StashApply: 'gitlens.stashApply' as Commands,
|
||||
StashDelete: 'gitlens.stashDelete' as Commands,
|
||||
StashSave: 'gitlens.stashSave' as Commands,
|
||||
ToggleBlame: 'gitlens.toggleBlame' as Commands,
|
||||
ToggleFileBlame: 'gitlens.toggleFileBlame' as Commands,
|
||||
ToggleLineBlame: 'gitlens.toggleLineBlame' as Commands,
|
||||
ToggleCodeLens: 'gitlens.toggleCodeLens' as Commands
|
||||
};
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
'use strict';
|
||||
import { TextEditor, TextEditorEdit, Uri, window } from 'vscode';
|
||||
import { BlameAnnotationController } from '../blameAnnotationController';
|
||||
import { Commands, EditorCommand } from './common';
|
||||
import { Logger } from '../logger';
|
||||
|
||||
export interface ShowBlameCommandArgs {
|
||||
sha?: string;
|
||||
}
|
||||
|
||||
export class ShowBlameCommand extends EditorCommand {
|
||||
|
||||
constructor(private annotationController: BlameAnnotationController) {
|
||||
super(Commands.ShowBlame);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, edit: TextEditorEdit, uri?: Uri, args: ShowBlameCommandArgs = {}): Promise<any> {
|
||||
if (editor !== undefined && editor.document !== undefined && editor.document.isDirty) return undefined;
|
||||
|
||||
try {
|
||||
return this.annotationController.showBlameAnnotation(editor, args.sha !== undefined ? args.sha : editor.selection.active.line);
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error(ex, 'ShowBlameCommand');
|
||||
return window.showErrorMessage(`Unable to show blame annotations. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
35
src/commands/showFileBlame.ts
Normal file
35
src/commands/showFileBlame.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
'use strict';
|
||||
import { TextEditor, TextEditorEdit, Uri, window, workspace } from 'vscode';
|
||||
import { AnnotationController } from '../annotations/annotationController';
|
||||
import { Commands, EditorCommand } from './common';
|
||||
import { ExtensionKey, FileAnnotationType, IConfig } from '../configuration';
|
||||
import { Logger } from '../logger';
|
||||
|
||||
export interface ShowFileBlameCommandArgs {
|
||||
sha?: string;
|
||||
type?: FileAnnotationType;
|
||||
}
|
||||
|
||||
export class ShowFileBlameCommand extends EditorCommand {
|
||||
|
||||
constructor(private annotationController: AnnotationController) {
|
||||
super(Commands.ShowFileBlame);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, edit: TextEditorEdit, uri?: Uri, args: ShowFileBlameCommandArgs = {}): Promise<any> {
|
||||
if (editor !== undefined && editor.document !== undefined && editor.document.isDirty) return undefined;
|
||||
|
||||
try {
|
||||
if (args.type === undefined) {
|
||||
const cfg = workspace.getConfiguration().get<IConfig>(ExtensionKey)!;
|
||||
args.type = cfg.blame.file.annotationType;
|
||||
}
|
||||
|
||||
return this.annotationController.showAnnotations(editor, args.type, args.sha !== undefined ? args.sha : editor.selection.active.line);
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error(ex, 'ShowFileBlameCommand');
|
||||
return window.showErrorMessage(`Unable to show file blame annotations. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
34
src/commands/showLineBlame.ts
Normal file
34
src/commands/showLineBlame.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
import { TextEditor, TextEditorEdit, Uri, window, workspace } from 'vscode';
|
||||
import { CurrentLineController } from '../currentLineController';
|
||||
import { Commands, EditorCommand } from './common';
|
||||
import { ExtensionKey, IConfig, LineAnnotationType } from '../configuration';
|
||||
import { Logger } from '../logger';
|
||||
|
||||
export interface ShowLineBlameCommandArgs {
|
||||
type?: LineAnnotationType;
|
||||
}
|
||||
|
||||
export class ShowLineBlameCommand extends EditorCommand {
|
||||
|
||||
constructor(private currentLineController: CurrentLineController) {
|
||||
super(Commands.ShowLineBlame);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, edit: TextEditorEdit, uri?: Uri, args: ShowLineBlameCommandArgs = {}): Promise<any> {
|
||||
if (editor !== undefined && editor.document !== undefined && editor.document.isDirty) return undefined;
|
||||
|
||||
try {
|
||||
if (args.type === undefined) {
|
||||
const cfg = workspace.getConfiguration().get<IConfig>(ExtensionKey)!;
|
||||
args.type = cfg.blame.line.annotationType;
|
||||
}
|
||||
|
||||
return this.currentLineController.showAnnotations(editor, args.type);
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error(ex, 'ShowLineBlameCommand');
|
||||
return window.showErrorMessage(`Unable to show line blame annotations. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
'use strict';
|
||||
import { TextEditor, TextEditorEdit, Uri, window } from 'vscode';
|
||||
import { BlameAnnotationController } from '../blameAnnotationController';
|
||||
import { Commands, EditorCommand } from './common';
|
||||
import { Logger } from '../logger';
|
||||
|
||||
export interface ToggleBlameCommandArgs {
|
||||
sha?: string;
|
||||
}
|
||||
|
||||
export class ToggleBlameCommand extends EditorCommand {
|
||||
|
||||
constructor(private annotationController: BlameAnnotationController) {
|
||||
super(Commands.ToggleBlame);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, edit: TextEditorEdit, uri?: Uri, args: ToggleBlameCommandArgs = {}): Promise<any> {
|
||||
if (editor !== undefined && editor.document !== undefined && editor.document.isDirty) return undefined;
|
||||
|
||||
try {
|
||||
return this.annotationController.toggleBlameAnnotation(editor, args.sha !== undefined ? args.sha : editor.selection.active.line);
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error(ex, 'ToggleBlameCommand');
|
||||
return window.showErrorMessage(`Unable to show blame annotations. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
35
src/commands/toggleFileBlame.ts
Normal file
35
src/commands/toggleFileBlame.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
'use strict';
|
||||
import { TextEditor, TextEditorEdit, Uri, window, workspace } from 'vscode';
|
||||
import { AnnotationController } from '../annotations/annotationController';
|
||||
import { Commands, EditorCommand } from './common';
|
||||
import { ExtensionKey, FileAnnotationType, IConfig } from '../configuration';
|
||||
import { Logger } from '../logger';
|
||||
|
||||
export interface ToggleFileBlameCommandArgs {
|
||||
sha?: string;
|
||||
type?: FileAnnotationType;
|
||||
}
|
||||
|
||||
export class ToggleFileBlameCommand extends EditorCommand {
|
||||
|
||||
constructor(private annotationController: AnnotationController) {
|
||||
super(Commands.ToggleFileBlame);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, edit: TextEditorEdit, uri?: Uri, args: ToggleFileBlameCommandArgs = {}): Promise<any> {
|
||||
if (editor !== undefined && editor.document !== undefined && editor.document.isDirty) return undefined;
|
||||
|
||||
try {
|
||||
if (args.type === undefined) {
|
||||
const cfg = workspace.getConfiguration().get<IConfig>(ExtensionKey)!;
|
||||
args.type = cfg.blame.file.annotationType;
|
||||
}
|
||||
|
||||
return this.annotationController.toggleAnnotations(editor, args.type, args.sha !== undefined ? args.sha : editor.selection.active.line);
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error(ex, 'ToggleFileBlameCommand');
|
||||
return window.showErrorMessage(`Unable to toggle file blame annotations. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
34
src/commands/toggleLineBlame.ts
Normal file
34
src/commands/toggleLineBlame.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
'use strict';
|
||||
import { TextEditor, TextEditorEdit, Uri, window, workspace } from 'vscode';
|
||||
import { CurrentLineController } from '../currentLineController';
|
||||
import { Commands, EditorCommand } from './common';
|
||||
import { ExtensionKey, IConfig, LineAnnotationType } from '../configuration';
|
||||
import { Logger } from '../logger';
|
||||
|
||||
export interface ToggleLineBlameCommandArgs {
|
||||
type?: LineAnnotationType;
|
||||
}
|
||||
|
||||
export class ToggleLineBlameCommand extends EditorCommand {
|
||||
|
||||
constructor(private currentLineController: CurrentLineController) {
|
||||
super(Commands.ToggleLineBlame);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, edit: TextEditorEdit, uri?: Uri, args: ToggleLineBlameCommandArgs = {}): Promise<any> {
|
||||
if (editor !== undefined && editor.document !== undefined && editor.document.isDirty) return undefined;
|
||||
|
||||
try {
|
||||
if (args.type === undefined) {
|
||||
const cfg = workspace.getConfiguration().get<IConfig>(ExtensionKey)!;
|
||||
args.type = cfg.blame.line.annotationType;
|
||||
}
|
||||
|
||||
return this.currentLineController.toggleAnnotations(editor, args.type);
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error(ex, 'ToggleLineBlameCommand');
|
||||
return window.showErrorMessage(`Unable to toggle line blame annotations. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user