mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-02-09 01:32:40 -05:00
Fixes #39 - adds date options for status bar blame
Adds data formatting option to blame annotations Preps v2.8.2
This commit is contained in:
@@ -1,5 +1,11 @@
|
|||||||
## Release Notes
|
## Release Notes
|
||||||
|
|
||||||
|
### 2.8.2
|
||||||
|
- Adds `gitlens.blame.annotation.dateFormat` to specify how absolute commit dates will be shown in the blame annotations
|
||||||
|
- Adds `gitlens.statusBar.date` to specify whether and how the commit date will be shown in the blame status bar
|
||||||
|
- Adds `gitlens.statusBar.dateFormat` to specify how absolute commit dates will be shown in the blame status bar
|
||||||
|
- Fixes [#39](https://github.com/eamodio/vscode-gitlens/issues/39) - Add date format options for status bar blame
|
||||||
|
|
||||||
### 2.8.1
|
### 2.8.1
|
||||||
- Fixes issue where `Compare with *` commands fail to open when there is no active editor
|
- Fixes issue where `Compare with *` commands fail to open when there is no active editor
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,8 @@ Provides Git CodeLens information (most recent commit, # of authors), on-demand
|
|||||||
|`gitlens.blame.annotation.highlight`|Specifies whether and how to highlight blame annotations. `none` - no highlight. `gutter` - adds a gutter icon. `line` - adds a full-line highlight. `both` - adds both `gutter` and `line` highlights
|
|`gitlens.blame.annotation.highlight`|Specifies whether and how to highlight blame annotations. `none` - no highlight. `gutter` - adds a gutter icon. `line` - adds a full-line highlight. `both` - adds both `gutter` and `line` highlights
|
||||||
|`gitlens.blame.annotation.sha`|Specifies whether the commit sha will be shown in the blame annotations. Applies only to the `expanded` & `trailing` annotation styles
|
|`gitlens.blame.annotation.sha`|Specifies whether the commit sha will be shown in the blame annotations. Applies only to the `expanded` & `trailing` annotation styles
|
||||||
|`gitlens.blame.annotation.author`|Specifies whether the committer will be shown in the blame annotations. Applies only to the `expanded` & `trailing` annotation styles
|
|`gitlens.blame.annotation.author`|Specifies whether the committer will be shown in the blame annotations. Applies only to the `expanded` & `trailing` annotation styles
|
||||||
|`gitlens.blame.annotation.date`|Specifies whether and how the commit date will be shown in the blame annotations. `off` - no date. `relative` - relative date (e.g. 1 day ago). `absolute` - date in `MMMM Do, YYYY h:MMa` format. Applies only to the `expanded` & `trailing` annotation styles
|
|`gitlens.blame.annotation.date`|Specifies whether and how the commit date will be shown in the blame annotations. `off` - no date. `relative` - relative date (e.g. 1 day ago). `absolute` - date format specified by `gitlens.blame.annotation.dateFormat`. Applies only to the `expanded` & `trailing` annotation styles
|
||||||
|
|`gitlens.blame.annotation.dateFormat`|Specifies the date format of how absolute dates will be shown in the blame annotations. See https://momentjs.com/docs/#/displaying/format/ for valid formats
|
||||||
|`gitlens.blame.annotation.message`|Specifies whether the commit message will be shown in the blame annotations. Applies only to the `expanded` & `trailing` annotation styles
|
|`gitlens.blame.annotation.message`|Specifies whether the commit message will be shown in the blame annotations. Applies only to the `expanded` & `trailing` annotation styles
|
||||||
|`gitlens.blame.annotation.activeLine`|Specifies whether and how to show blame annotations on the active line. `off` - no annotation. `inline` - adds a trailing annotation to the active line. `hover` - adds hover annotation to the active line. `both` - adds both `inline` and `hover` annotations
|
|`gitlens.blame.annotation.activeLine`|Specifies whether and how to show blame annotations on the active line. `off` - no annotation. `inline` - adds a trailing annotation to the active line. `hover` - adds hover annotation to the active line. `both` - adds both `inline` and `hover` annotations
|
||||||
|`gitlens.codeLens.visibility`|Specifies when CodeLens will be triggered in the active document. `auto` - automatically. `ondemand` - only when requested. `off` - disables all active document CodeLens
|
|`gitlens.codeLens.visibility`|Specifies when CodeLens will be triggered in the active document. `auto` - automatically. `ondemand` - only when requested. `off` - disables all active document CodeLens
|
||||||
@@ -50,6 +51,8 @@ Provides Git CodeLens information (most recent commit, # of authors), on-demand
|
|||||||
|`gitlens.menus.diff.enabled`|Specifies whether diff commands will be added to the context menus
|
|`gitlens.menus.diff.enabled`|Specifies whether diff commands will be added to the context menus
|
||||||
|`gitlens.statusBar.enabled`|Specifies whether blame information is shown in the status bar
|
|`gitlens.statusBar.enabled`|Specifies whether blame information is shown in the status bar
|
||||||
|`gitlens.statusBar.command`|"Specifies the command executed when the blame status bar item is clicked. `gitlens.toggleBlame` - toggles blame annotations. `gitlens.showBlameHistory` - opens the blame history explorer. `gitlens.showFileHistory` - opens the file history explorer. `gitlens.diffWithPrevious` - compares the current checked-in file with the previous commit. `gitlens.showQuickCommitDetails` - shows a commit details quick pick. `gitlens.showQuickFileHistory` - shows a file history quick pick. `gitlens.showQuickFileHistory` - shows a repository history quick pick
|
|`gitlens.statusBar.command`|"Specifies the command executed when the blame status bar item is clicked. `gitlens.toggleBlame` - toggles blame annotations. `gitlens.showBlameHistory` - opens the blame history explorer. `gitlens.showFileHistory` - opens the file history explorer. `gitlens.diffWithPrevious` - compares the current checked-in file with the previous commit. `gitlens.showQuickCommitDetails` - shows a commit details quick pick. `gitlens.showQuickFileHistory` - shows a file history quick pick. `gitlens.showQuickFileHistory` - shows a repository history quick pick
|
||||||
|
|`gitlens.statusBar.date`|Specifies whether and how the commit date will be shown in the blame status bar. `off` - no date. `relative` - relative date (e.g. 1 day ago). `absolute` - date format specified by `gitlens.statusBar.dateFormat`
|
||||||
|
|`gitlens.statusBar.dateFormat`|Specifies the date format of how absolute dates will be shown in the blame status bar. See https://momentjs.com/docs/#/displaying/format/ for valid formats
|
||||||
|
|
||||||
## Known Issues
|
## Known Issues
|
||||||
|
|
||||||
|
|||||||
24
package.json
24
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "gitlens",
|
"name": "gitlens",
|
||||||
"version": "2.8.1",
|
"version": "2.8.2",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Eric Amodio",
|
"name": "Eric Amodio",
|
||||||
"email": "eamodio@gmail.com"
|
"email": "eamodio@gmail.com"
|
||||||
@@ -81,7 +81,12 @@
|
|||||||
"relative",
|
"relative",
|
||||||
"absolute"
|
"absolute"
|
||||||
],
|
],
|
||||||
"description": "Specifies whether and how the commit date will be shown in the blame annotations. `off` - no date. `relative` - relative date (e.g. 1 day ago). `absolute` - date in `MMMM Do, YYYY h:MMa` format. Applies only to the `expanded` & `trailing` annotation styles"
|
"description": "Specifies whether and how the commit date will be shown in the blame annotations. `off` - no date. `relative` - relative date (e.g. 1 day ago). `absolute` - date format specified by `gitlens.blame.annotation.dateFormat`. Applies only to the `expanded` & `trailing` annotation styles"
|
||||||
|
},
|
||||||
|
"gitlens.blame.annotation.dateFormat": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"description": "Specifies the date format of how absolute dates will be shown in the blame annotations. See https://momentjs.com/docs/#/displaying/format/ for valid formats"
|
||||||
},
|
},
|
||||||
"gitlens.blame.annotation.message": {
|
"gitlens.blame.annotation.message": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
@@ -265,6 +270,21 @@
|
|||||||
],
|
],
|
||||||
"description": "Specifies the command executed when the blame status bar item is clicked. `gitlens.toggleBlame` - toggles blame annotations. `gitlens.showBlameHistory` - opens the blame history explorer. `gitlens.showFileHistory` - opens the file history explorer. `gitlens.diffWithPrevious` - compares the current checked-in file with the previous commit. `gitlens.showQuickCommitDetails` - shows a commit details quick pick. `gitlens.showQuickFileHistory` - shows a file history quick pick. `gitlens.showQuickFileHistory` - shows a repository history quick pick"
|
"description": "Specifies the command executed when the blame status bar item is clicked. `gitlens.toggleBlame` - toggles blame annotations. `gitlens.showBlameHistory` - opens the blame history explorer. `gitlens.showFileHistory` - opens the file history explorer. `gitlens.diffWithPrevious` - compares the current checked-in file with the previous commit. `gitlens.showQuickCommitDetails` - shows a commit details quick pick. `gitlens.showQuickFileHistory` - shows a file history quick pick. `gitlens.showQuickFileHistory` - shows a repository history quick pick"
|
||||||
},
|
},
|
||||||
|
"gitlens.statusBar.date": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "relative",
|
||||||
|
"enum": [
|
||||||
|
"off",
|
||||||
|
"relative",
|
||||||
|
"absolute"
|
||||||
|
],
|
||||||
|
"description": "Specifies whether and how the commit date will be shown in the blame status bar. `off` - no date. `relative` - relative date (e.g. 1 day ago). `absolute` - date format specified by `gitlens.statusBar.dateFormat`"
|
||||||
|
},
|
||||||
|
"gitlens.statusBar.dateFormat": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "",
|
||||||
|
"description": "Specifies the date format of how absolute dates will be shown in the blame status bar. See https://momentjs.com/docs/#/displaying/format/ for valid formats"
|
||||||
|
},
|
||||||
"gitlens.advanced.caching.enabled": {
|
"gitlens.advanced.caching.enabled": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": true,
|
"default": true,
|
||||||
|
|||||||
@@ -208,7 +208,24 @@ export default class BlameActiveLineController extends Disposable {
|
|||||||
|
|
||||||
async show(commit: GitCommit, blameLine: IGitCommitLine, editor: TextEditor) {
|
async show(commit: GitCommit, blameLine: IGitCommitLine, editor: TextEditor) {
|
||||||
if (this._config.statusBar.enabled) {
|
if (this._config.statusBar.enabled) {
|
||||||
this._statusBarItem.text = `$(git-commit) ${commit.author}, ${moment(commit.date).fromNow()}`;
|
switch (this._config.statusBar.date) {
|
||||||
|
case 'off':
|
||||||
|
this._statusBarItem.text = `$(git-commit) ${commit.author}`;
|
||||||
|
break;
|
||||||
|
case 'absolute':
|
||||||
|
const dateFormat = this._config.statusBar.dateFormat || 'MMMM Do, YYYY h:MMa';
|
||||||
|
let date: string;
|
||||||
|
try {
|
||||||
|
date = moment(commit.date).format(dateFormat);
|
||||||
|
} catch (ex) {
|
||||||
|
date = moment(commit.date).format('MMMM Do, YYYY h:MMa');
|
||||||
|
}
|
||||||
|
this._statusBarItem.text = `$(git-commit) ${commit.author}, ${date}`;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this._statusBarItem.text = `$(git-commit) ${commit.author}, ${moment(commit.date).fromNow()}`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
switch (this._config.statusBar.command) {
|
switch (this._config.statusBar.command) {
|
||||||
case StatusBarCommand.BlameAnnotate:
|
case StatusBarCommand.BlameAnnotate:
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ export default class BlameAnnotationFormatter {
|
|||||||
let message = this.getMessage(config, commit, format === BlameAnnotationFormat.Unconstrained ? 0 : defaultMessageLength);
|
let message = this.getMessage(config, commit, format === BlameAnnotationFormat.Unconstrained ? 0 : defaultMessageLength);
|
||||||
|
|
||||||
if (format === BlameAnnotationFormat.Unconstrained) {
|
if (format === BlameAnnotationFormat.Unconstrained) {
|
||||||
const authorAndDate = this.getAuthorAndDate(config, commit, 'MMMM Do, YYYY h:MMa');
|
const authorAndDate = this.getAuthorAndDate(config, commit, config.annotation.dateFormat || 'MMMM Do, YYYY h:MMa');
|
||||||
if (config.annotation.sha) {
|
if (config.annotation.sha) {
|
||||||
message = `${sha}${(authorAndDate ? `${cssPadding}${cssSeparator}${cssPadding}${authorAndDate}` : '')}${(message ? `${cssPadding}${cssSeparator}${cssPadding}${message}` : '')}`;
|
message = `${sha}${(authorAndDate ? `${cssPadding}${cssSeparator}${cssPadding}${authorAndDate}` : '')}${(message ? `${cssPadding}${cssSeparator}${cssPadding}${message}` : '')}`;
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ export default class BlameAnnotationFormatter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const author = this.getAuthor(config, commit, defaultAuthorLength);
|
const author = this.getAuthor(config, commit, defaultAuthorLength);
|
||||||
const date = this.getDate(config, commit, 'MM/DD/YYYY', true);
|
const date = this.getDate(config, commit, config.annotation.dateFormat || 'MM/DD/YYYY', true);
|
||||||
if (config.annotation.sha) {
|
if (config.annotation.sha) {
|
||||||
message = `${sha}${(author ? `${cssPadding}${cssSeparator}${cssPadding}${author}` : '')}${(date ? `${cssPadding}${cssSeparator}${cssPadding}${date}` : '')}${(message ? `${cssPadding}${cssSeparator}${cssPadding}${message}` : '')}`;
|
message = `${sha}${(author ? `${cssPadding}${cssSeparator}${cssPadding}${author}` : '')}${(date ? `${cssPadding}${cssSeparator}${cssPadding}${date}` : '')}${(message ? `${cssPadding}${cssSeparator}${cssPadding}${message}` : '')}`;
|
||||||
}
|
}
|
||||||
@@ -70,10 +70,10 @@ export default class BlameAnnotationFormatter {
|
|||||||
return `\`${'0'.repeat(8)}\` __Uncommitted changes__`;
|
return `\`${'0'.repeat(8)}\` __Uncommitted changes__`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return `\`${commit.sha}\` __${commit.author}__, ${moment(commit.date).fromNow()} _(${moment(commit.date).format('MMMM Do, YYYY h:MMa')})_ \n\n${message}`;
|
return `\`${commit.sha}\` __${commit.author}__, ${moment(commit.date).fromNow()} _(${moment(commit.date).format(config.annotation.dateFormat || 'MMMM Do, YYYY h:MMa')})_ \n\n${message}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getAuthorAndDate(config: IBlameConfig, commit: GitCommit, format?: string, force: boolean = false) {
|
static getAuthorAndDate(config: IBlameConfig, commit: GitCommit, format: string, force: boolean = false) {
|
||||||
if (!force && !config.annotation.author && (!config.annotation.date || config.annotation.date === 'off')) return '';
|
if (!force && !config.annotation.author && (!config.annotation.date || config.annotation.date === 'off')) return '';
|
||||||
|
|
||||||
if (!config.annotation.author) {
|
if (!config.annotation.author) {
|
||||||
@@ -101,7 +101,7 @@ export default class BlameAnnotationFormatter {
|
|||||||
return author + cssPadding.repeat(truncateTo - author.length);
|
return author + cssPadding.repeat(truncateTo - author.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getDate(config: IBlameConfig, commit: GitCommit, format?: string, truncate: boolean = false, force: boolean = false) {
|
static getDate(config: IBlameConfig, commit: GitCommit, format: string, truncate: boolean = false, force: boolean = false) {
|
||||||
if (!force && (!config.annotation.date || config.annotation.date === 'off')) return '';
|
if (!force && (!config.annotation.date || config.annotation.date === 'off')) return '';
|
||||||
|
|
||||||
const date = config.annotation.date === 'relative'
|
const date = config.annotation.date === 'relative'
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ export class BlameAnnotationProvider extends Disposable {
|
|||||||
gutter = `${cssIndent} ${BlameAnnotationFormatter.getAuthor(this._config, commit, defaultAuthorLength, true)}`;
|
gutter = `${cssIndent} ${BlameAnnotationFormatter.getAuthor(this._config, commit, defaultAuthorLength, true)}`;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
gutter = `${cssIndent} ${BlameAnnotationFormatter.getDate(this._config, commit, 'MM/DD/YYYY', true, true)}`;
|
gutter = `${cssIndent} ${BlameAnnotationFormatter.getDate(this._config, commit, this._config.annotation.dateFormat || 'MM/DD/YYYY', true, true)}`;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
gutter = `${cssIndent}`;
|
gutter = `${cssIndent}`;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export interface IBlameConfig {
|
|||||||
sha: boolean;
|
sha: boolean;
|
||||||
author: boolean;
|
author: boolean;
|
||||||
date: 'off' | 'relative' | 'absolute';
|
date: 'off' | 'relative' | 'absolute';
|
||||||
|
dateFormat: string;
|
||||||
message: boolean;
|
message: boolean;
|
||||||
activeLine: 'off' | 'inline' | 'hover' | 'both';
|
activeLine: 'off' | 'inline' | 'hover' | 'both';
|
||||||
characters: {
|
characters: {
|
||||||
@@ -89,6 +90,8 @@ export const StatusBarCommand = {
|
|||||||
export interface IStatusBarConfig {
|
export interface IStatusBarConfig {
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
command: StatusBarCommand;
|
command: StatusBarCommand;
|
||||||
|
date: 'off' | 'relative' | 'absolute';
|
||||||
|
dateFormat: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IAdvancedConfig {
|
export interface IAdvancedConfig {
|
||||||
|
|||||||
Reference in New Issue
Block a user