mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-01-18 09:45:36 -05:00
78
package.json
78
package.json
@@ -355,79 +355,91 @@
|
||||
"command": "gitlens.showQuickRepoHistory",
|
||||
"title": "Show Repository History",
|
||||
"category": "GitLens"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.copyShaToClipboard",
|
||||
"title": "Copy Commit Sha to Clipboard",
|
||||
"category": "GitLens"
|
||||
}
|
||||
],
|
||||
"menus": {
|
||||
"explorer/context": [
|
||||
{
|
||||
"command": "gitlens.diffWithWorking",
|
||||
"when": "config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "2_gitlens-file"
|
||||
"command": "gitlens.showQuickFileHistory",
|
||||
"when": "config.git.enabled",
|
||||
"group": "gitlens"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.diffWithPrevious",
|
||||
"when": "config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "2_gitlens-file"
|
||||
"group": "gitlens_diff"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.showQuickFileHistory",
|
||||
"when": "config.git.enabled",
|
||||
"group": "3_gitlens-file"
|
||||
"command": "gitlens.diffWithWorking",
|
||||
"when": "config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "gitlens_diff"
|
||||
}
|
||||
],
|
||||
"editor/title": [
|
||||
{
|
||||
"command": "gitlens.diffWithWorking",
|
||||
"when": "config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "2_gitlens"
|
||||
"command": "gitlens.toggleBlame",
|
||||
"when": "config.git.enabled",
|
||||
"group": "1_gitlens@1"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.showQuickFileHistory",
|
||||
"when": "config.git.enabled",
|
||||
"group": "1_gitlens@2"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.diffWithPrevious",
|
||||
"when": "config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "2_gitlens"
|
||||
"group": "1_gitlens_diff"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.diffWithWorking",
|
||||
"when": "config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "1_gitlens_diff"
|
||||
}
|
||||
],
|
||||
"editor/title/context": [
|
||||
{
|
||||
"command": "gitlens.toggleBlame",
|
||||
"when": "config.git.enabled",
|
||||
"group": "gitlens@1"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.showQuickFileHistory",
|
||||
"when": "editorTextFocus && config.git.enabled",
|
||||
"group": "3_gitlens"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.toggleBlame",
|
||||
"when": "editorTextFocus && config.git.enabled",
|
||||
"group": "3_gitlens"
|
||||
"when": "config.git.enabled",
|
||||
"group": "gitlens@2"
|
||||
}
|
||||
],
|
||||
"editor/context": [
|
||||
{
|
||||
"command": "gitlens.diffLineWithWorking",
|
||||
"when": "editorTextFocus && config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "2_gitlens@1.0"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.diffLineWithPrevious",
|
||||
"when": "editorTextFocus && config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "2_gitlens@1.1"
|
||||
"group": "1_gitlens@1"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.diffWithWorking",
|
||||
"command": "gitlens.diffLineWithWorking",
|
||||
"when": "editorTextFocus && config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "3_gitlens@1.0"
|
||||
"group": "1_gitlens@2"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.diffWithPrevious",
|
||||
"when": "editorTextFocus && config.gitlens.menus.diff.enabled && config.git.enabled",
|
||||
"group": "3_gitlens@1.1"
|
||||
"command": "gitlens.toggleBlame",
|
||||
"when": "editorTextFocus && config.git.enabled",
|
||||
"group": "2_gitlens@1"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.showQuickFileHistory",
|
||||
"alt": "gitlens.showFileHistory",
|
||||
"when": "config.git.enabled",
|
||||
"group": "4_gitlens"
|
||||
"group": "2_gitlens@2"
|
||||
},
|
||||
{
|
||||
"command": "gitlens.toggleBlame",
|
||||
"command": "gitlens.copyShaToClipboard",
|
||||
"when": "editorTextFocus && config.git.enabled",
|
||||
"group": "4_gitlens"
|
||||
"group": "9_gitlens@1"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -498,6 +510,7 @@
|
||||
"vscode:prepublish": "tsc -p ./"
|
||||
},
|
||||
"dependencies": {
|
||||
"copy-paste": "^1.3.0",
|
||||
"ignore": "^3.2.2",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.escaperegexp": "^4.1.2",
|
||||
@@ -508,6 +521,7 @@
|
||||
"tmp": "^0.0.31"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/copy-paste": "^1.1.30",
|
||||
"@types/node": "^7.0.5",
|
||||
"@types/mocha": "^2.2.39",
|
||||
"@types/tmp": "^0.0.32",
|
||||
|
||||
49
src/commands/copyShaToClipboard.ts
Normal file
49
src/commands/copyShaToClipboard.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
import { TextEditor, TextEditorEdit, Uri, window } from 'vscode';
|
||||
import { EditorCommand } from './commands';
|
||||
import { Commands } from '../constants';
|
||||
import GitProvider, { GitUri } from '../gitProvider';
|
||||
import { Logger } from '../logger';
|
||||
import { copy } from 'copy-paste';
|
||||
|
||||
export default class CopyShaToClipboard extends EditorCommand {
|
||||
|
||||
constructor(private git: GitProvider) {
|
||||
super(Commands.CopyShaToClipboard);
|
||||
}
|
||||
|
||||
async execute(editor: TextEditor, edit: TextEditorEdit, uri?: Uri, sha?: string): Promise<any> {
|
||||
if (!(uri instanceof Uri)) {
|
||||
if (!editor.document) return undefined;
|
||||
uri = editor.document.uri;
|
||||
}
|
||||
|
||||
const line = editor.selection.active.line;
|
||||
const gitUri = GitUri.fromUri(uri, this.git);
|
||||
|
||||
try {
|
||||
if (!sha) {
|
||||
const blameline = line - gitUri.offset;
|
||||
if (blameline < 0) return undefined;
|
||||
|
||||
try {
|
||||
const blame = await this.git.getBlameForLine(gitUri.fsPath, blameline, gitUri.sha, gitUri.repoPath);
|
||||
if (!blame) return undefined;
|
||||
|
||||
sha = blame.commit.sha;
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error('[GitLens.CopyShaToClipboard]', `getBlameForLine(${blameline})`, ex);
|
||||
return window.showErrorMessage(`Unable to copy sha. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
|
||||
copy(sha);
|
||||
return undefined;
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error('GitLens.CopyShaToClipboard', ex);
|
||||
return window.showErrorMessage(`Unable to copy sha. See output channel for more details`);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,8 +14,9 @@ export const BuiltInCommands = {
|
||||
ToggleRenderWhitespace: 'editor.action.toggleRenderWhitespace' as BuiltInCommands
|
||||
};
|
||||
|
||||
export type Commands = 'gitlens.diffWithPrevious' | 'gitlens.diffLineWithPrevious' | 'gitlens.diffWithWorking' | 'gitlens.diffLineWithWorking' | 'gitlens.showBlame' | 'gitlens.showBlameHistory' | 'gitlens.showFileHistory' | 'gitlens.showQuickCommitDetails' | 'gitlens.showQuickFileHistory' | 'gitlens.showQuickRepoHistory' | 'gitlens.toggleBlame' | 'gitlens.toggleCodeLens';
|
||||
export type Commands = 'gitlens.copyShaToClipboard' | 'gitlens.diffWithPrevious' | 'gitlens.diffLineWithPrevious' | 'gitlens.diffWithWorking' | 'gitlens.diffLineWithWorking' | 'gitlens.showBlame' | 'gitlens.showBlameHistory' | 'gitlens.showFileHistory' | 'gitlens.showQuickCommitDetails' | 'gitlens.showQuickFileHistory' | 'gitlens.showQuickRepoHistory' | 'gitlens.toggleBlame' | 'gitlens.toggleCodeLens';
|
||||
export const Commands = {
|
||||
CopyShaToClipboard: 'gitlens.copyShaToClipboard' as Commands,
|
||||
DiffWithPrevious: 'gitlens.diffWithPrevious' as Commands,
|
||||
DiffLineWithPrevious: 'gitlens.diffLineWithPrevious' as Commands,
|
||||
DiffWithWorking: 'gitlens.diffWithWorking' as Commands,
|
||||
|
||||
@@ -3,6 +3,7 @@ import { ExtensionContext, languages, window, workspace } from 'vscode';
|
||||
import BlameActiveLineController from './blameActiveLineController';
|
||||
import BlameAnnotationController from './blameAnnotationController';
|
||||
import { configureCssCharacters } from './blameAnnotationFormatter';
|
||||
import CopyShaToClipboardCommand from './commands/copyShaToClipboard';
|
||||
import DiffLineWithPreviousCommand from './commands/diffLineWithPrevious';
|
||||
import DiffLineWithWorkingCommand from './commands/diffLineWithWorking';
|
||||
import DiffWithPreviousCommand from './commands/diffWithPrevious';
|
||||
@@ -63,9 +64,10 @@ export async function activate(context: ExtensionContext) {
|
||||
const annotationController = new BlameAnnotationController(context, git);
|
||||
context.subscriptions.push(annotationController);
|
||||
|
||||
const statusBarController = new BlameStatusBarController(context, git, annotationController);
|
||||
context.subscriptions.push(statusBarController);
|
||||
const activeLineController = new BlameActiveLineController(context, git, annotationController);
|
||||
context.subscriptions.push(activeLineController);
|
||||
|
||||
context.subscriptions.push(new CopyShaToClipboardCommand(git));
|
||||
context.subscriptions.push(new DiffWithWorkingCommand(git));
|
||||
context.subscriptions.push(new DiffLineWithWorkingCommand(git));
|
||||
context.subscriptions.push(new DiffWithPreviousCommand(git));
|
||||
|
||||
Reference in New Issue
Block a user