From 49f7b5651dcc13b8a8a3bd13ce1e4e79cf5cfb65 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Wed, 2 Dec 2020 03:06:49 -0500 Subject: [PATCH] Closes #297 - adds heatmap to scroll bar --- CHANGELOG.md | 2 ++ README.md | 1 + images/heatmap.pdn | Bin 23788 -> 25881 bytes package.json | 25 ++++++++++++- src/annotations/annotations.ts | 31 +++++++++------- src/config.ts | 6 ++++ .../apps/images/settings/heatmap-gutter.png | Bin 0 -> 707 bytes .../apps/images/settings/heatmap-scrollbar.png | Bin 0 -> 712 bytes src/webviews/apps/images/settings/heatmap.png | Bin 12612 -> 12511 bytes src/webviews/apps/settings/partials/heatmap.html | 40 +++++++++++++++++++++ 10 files changed, 91 insertions(+), 14 deletions(-) create mode 100644 src/webviews/apps/images/settings/heatmap-gutter.png create mode 100644 src/webviews/apps/images/settings/heatmap-scrollbar.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d6aede..87386ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### Added +- Adds ability to show gutter heatmap in the gutter and/or on the scroll bar — closes [#297](https://github.com/eamodio/vscode-gitlens/issues/297) + - Adds `gitlens.heatmap.locations` setting to specify where the indicators of the gutter heatmap annotations will be shown - Adds a `gitlens.fileAnnotations.command` setting to specify whether the file annotations button in the editor title shows a menu or immediately toggles the specified file annotations — closes [#1165](https://github.com/eamodio/vscode-gitlens/issues/1165) thanks to [PR #1171](https://github.com/eamodio/vscode-gitlens/pull/1171) by Raaj Patil ([@arrpee](https://github.com/arrpee)) - Adds this new option to the _Menus & Toolbars_ section of the GitLens Interactive Settings diff --git a/README.md b/README.md index 25073e0..f7ebbcf 100644 --- a/README.md +++ b/README.md @@ -836,6 +836,7 @@ See also [View Settings](#view-settings- 'Jump to the View settings') | `gitlens.heatmap.ageThreshold` | Specifies the age of the most recent change (in days) after which the gutter heatmap annotations will be cold rather than hot (i.e. will use `gitlens.heatmap.coldColor` instead of `gitlens.heatmap.hotColor`) | | `gitlens.heatmap.coldColor` | Specifies the base color of the gutter heatmap annotations when the most recent change is older (cold) than the `gitlens.heatmap.ageThreshold` value | | `gitlens.heatmap.hotColor` | Specifies the base color of the gutter heatmap annotations when the most recent change is newer (hot) than the `gitlens.heatmap.ageThreshold` value | +| `gitlens.heatmap.locations` | Specifies where the indicators of the gutter heatmap annotations will be shown

`gutter` - adds a gutter indicator
`overview` - adds a decoration to the overview ruler (scroll bar) | | `gitlens.heatmap.toggleMode` | Specifies how the gutter heatmap annotations will be toggled

`file` - toggles each file individually
`window` - toggles the window, i.e. all files at once | ## Git Command Palette Settings [#](#git-command-palette-settings- 'Git Command Palette Settings') diff --git a/images/heatmap.pdn b/images/heatmap.pdn index e3d8f1fe35e113e98c03700520398185de97b150..d0c9f4c08bb6289ba06319ea3bce05cca5491c02 100644 GIT binary patch literal 25881 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
wb{U?BCU)Tp9 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 b_1tk~`~1H~YnJ{@3NU+f;+o4{xefmV0`cqE diff --git a/package.json b/package.json index a862b18..d9ac8b1 100644 --- a/package.json +++ b/package.json @@ -355,7 +355,7 @@ ] }, "minItems": 1, - "maxItems": 3, + "maxItems": 2, "uniqueItems": true, "markdownDescription": "Specifies where the indicators of the gutter changes annotations will be shown", "scope": "window" @@ -749,6 +749,29 @@ "markdownDescription": "Specifies the base color of the gutter heatmap annotations when the most recent change is newer (hot) than the `#gitlens.heatmap.ageThreshold#` value", "scope": "window" }, + "gitlens.heatmap.locations": { + "type": "array", + "default": [ + "gutter", + "overview" + ], + "items": { + "type": "string", + "enum": [ + "gutter", + "overview" + ], + "enumDescriptions": [ + "Adds a gutter indicator", + "Adds a decoration to the overview ruler (scroll bar)" + ] + }, + "minItems": 1, + "maxItems": 2, + "uniqueItems": true, + "markdownDescription": "Specifies where the indicators of the gutter heatmap annotations will be shown", + "scope": "window" + }, "gitlens.heatmap.toggleMode": { "type": "string", "default": "file", diff --git a/src/annotations/annotations.ts b/src/annotations/annotations.ts index a067076..817410b 100644 --- a/src/annotations/annotations.ts +++ b/src/annotations/annotations.ts @@ -2,6 +2,7 @@ import { DecorationInstanceRenderOptions, DecorationOptions, + OverviewRulerLane, Range, TextEditorDecorationType, ThemableDecorationAttachmentRenderOptions, @@ -10,7 +11,8 @@ import { Uri, window, } from 'vscode'; -import { configuration } from '../configuration'; +import { HeatmapLocations } from '../config'; +import { Config, configuration } from '../configuration'; import { GlyphChars } from '../constants'; import { Container } from '../container'; import { CommitFormatOptions, CommitFormatter, GitCommit } from '../git/git'; @@ -23,11 +25,6 @@ export interface ComputedHeatmap { computeRelativeAge(date: Date): number; } -interface HeatmapConfig { - enabled: boolean; - location?: 'left' | 'right'; -} - interface RenderOptions extends DecorationInstanceRenderOptions, ThemableDecorationRenderOptions, @@ -113,17 +110,25 @@ export class Annotations { ) { const [r, g, b, a] = this.getHeatmapColor(date, heatmap); + const { locations } = Container.config.heatmap; + const gutter = locations.includes(HeatmapLocations.Gutter); + const overview = locations.includes(HeatmapLocations.Overview); + const key = `${r},${g},${b},${a}`; let colorDecoration = map.get(key); if (colorDecoration == null) { colorDecoration = { decorationType: window.createTextEditorDecorationType({ - gutterIconPath: Uri.parse( - `data:image/svg+xml,${encodeURIComponent( - ``, - )}`, - ), - gutterIconSize: 'contain', + gutterIconPath: gutter + ? Uri.parse( + `data:image/svg+xml,${encodeURIComponent( + ``, + )}`, + ) + : undefined, + gutterIconSize: gutter ? 'contain' : undefined, + overviewRulerLane: overview ? OverviewRulerLane.Center : undefined, + overviewRulerColor: overview ? `rgba(${r},${g},${b},${a})` : undefined, }), rangesOrOptions: [range], }; @@ -159,7 +164,7 @@ export class Annotations { static gutterRenderOptions( separateLines: boolean, - heatmap: HeatmapConfig, + heatmap: Config['blame']['heatmap'], avatars: boolean, format: string, options: CommitFormatOptions, diff --git a/src/config.ts b/src/config.ts index d115716..e8d5940 100644 --- a/src/config.ts +++ b/src/config.ts @@ -63,6 +63,7 @@ export interface Config { ageThreshold: number; coldColor: string; hotColor: string; + locations: HeatmapLocations[]; toggleMode: AnnotationsToggleMode; }; hovers: { @@ -215,6 +216,11 @@ export enum GravatarDefaultStyle { Robot = 'robohash', } +export enum HeatmapLocations { + Gutter = 'gutter', + Overview = 'overview', +} + export enum KeyMap { Alternate = 'alternate', Chorded = 'chorded', diff --git a/src/webviews/apps/images/settings/heatmap-gutter.png b/src/webviews/apps/images/settings/heatmap-gutter.png new file mode 100644 index 0000000000000000000000000000000000000000..58cefcf558b7348b033426012714f3e7cb2afaeb GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0y~yV2S{;&v7sV$*U4QGl3Liage(c!@6@aFM%AEbVpxD z28NCO+O>;p7x8{K`yB-xp+icFqXcckKz+?j+Xrlk69vRLi6Sf#cd8Xn-QdB|-9j3{vF0md Y@R4N~OnXEafeDJi)78&qol`;+0Go!#u>b%7 literal 0 HcmV?d00001 diff --git a/src/webviews/apps/images/settings/heatmap-scrollbar.png b/src/webviews/apps/images/settings/heatmap-scrollbar.png new file mode 100644 index 0000000000000000000000000000000000000000..26c7a24ac71a4788ffb1cc246280605814a1541b GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0y~yV2S{;&v7sV$*U4QGl3Liage(c!@6@aFM%AEbVpxD z28NCO++ zXMsm#F#`i1kj=NB(SkKt1!$$Nr;B4qMcmt)I|UgWc@A&*z3uxGx&Xc(DrL=L&QMJU00%DwKM7$!p2$}-wadoL@6y4lR du|8^b!7Vt&B{;>3yE}wZyjXE7P#lW8hP1d-+@Zw@5Q+sz zkWHWW+x>m-?z_8xK)7vY?lWg*t}C2q4K;;lxa7DP7#PnK-^yxXU|{N_{~pK2ME`aw zI=Df9Jn+y`kjAJUr`$&$JhG8emBPTNOTfD^e~doHaeZsxfq{V!{rmGk=rM=^1LKXS zqO6p*ugTFW&O74yCE%Zji-Yp7LuzZ-zG7B;{b<*$qJw#LG&MJwG&Kc7Ow!>o2#Ddj zz0q-#_hhqfU{lkaZbkD#UzI&cdOJJr$I4-%*Pr7u2>$?+pGGMW^5HQ;kC|z5Jgj-i znBGi$0od%got>P}9?3a69u_O7XJ9ULSC-~c7}Pm+*XXFUIi14l_f3tJn(q;+iP3D= zK2&^yi9TDKGoyGWVX*D;h`HEiRlgkQEPOM{>Jzuh+M^u*M>ia=boKrW+54#UDgFXX&GeN4gNuAYpN+Caw;9N!^t`}3Q&{n-fN zBx~OoDkR2CAOqZVH7_L^SD81`qcKHguE%z z(<|rQ{BnzwV|CE05vNx&Il28Y;}glFgML`m&G&UIoVtg*%TsCS#gPT8$ZcBq!m|@&vS#bff{Lw`&p8F-v5PbPMDW4D{`nPulc}LGX__j8vXtloEw9Z z`mH_|!)l@g$@$UUn7!}1H#W=*(Uwi)A@a5w<%eP_5#T*Ieya6@GXFkBdFtczvAJ2T0X#GKtTclDdjlNfQiDTODO8$1B?(_i{DLw+jLxeD&h zs0?Wr3$)@fn5aBQ2V+1(!kR67*1vk!U?WTE-%*y}MG&nhBlG1|iqlSR0k8 ztKU3Y0{rFd9iCSM5VDJBvS_Ev_Sa^ai1Y+BVBd?+o}&rWi1{zv9!aC~VTX-|_16?3 z_5<`~+J7oV=Jg{CjP#wsrxy=!lKanb3G1V)ue#Urz!P!^95nxu1$=2}xvfX9y1L(q z$lO*tO5L>bh@T8Pq0LDsJeI!9Sa_@Jy<{RH6SNl6vsm(>Okeh|D-rZH(@f^c{cjmb z?S=}yM67@5>`IP4eLH5j@#EA?3AZ>as))A)?f(~FJZ=~)mV>bdRO3wK(~USnZG9jt z(9wN!_7}+rMndciMbs22TdOhA6NdBS^%mlq#@M&3F>1Nod~ZC^U^

U&;yzJtH>S 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 E0Q9|PVE_OC literal 12612 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 diff --git a/src/webviews/apps/settings/partials/heatmap.html b/src/webviews/apps/settings/partials/heatmap.html index 9e7f618..5e7a586 100644 --- a/src/webviews/apps/settings/partials/heatmap.html +++ b/src/webviews/apps/settings/partials/heatmap.html @@ -58,6 +58,36 @@ +

+
+
+ + +
+
+ +
+
+ + +
+
+
+
@@ -76,6 +106,16 @@
+ +