From f11c00ceda58665f12ecf127cbd67cc4349ad2ce Mon Sep 17 00:00:00 2001
From: Eric Amodio <eamodio@gmail.com>
Date: Thu, 17 Aug 2017 01:23:06 -0400
Subject: [PATCH] Changes the annotation line separator rendering

---
 CHANGELOG.md                                     |  2 ++
 README.md                                        |  3 +--
 package.json                                     |  5 -----
 src/annotations/annotations.ts                   | 13 ++++++------
 src/annotations/gutterBlameAnnotationProvider.ts | 25 ++++++++++++++----------
 src/configuration.ts                             |  7 -------
 6 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 017b0d3..d889401 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,10 +13,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
 
 ## Changed
 - Changes chat links from Gitter to [Slack](https://join.slack.com/t/vscode-gitlens/shared_invite/MjIxOTgxNDE3NzM0LTE1MDE2Nzk1MTgtMjkwMmZjMzcxNQ)
+- Changes the look of the line separators on the gutter blame annotations
 
 ## Removed
 - Removes unneeded `gitlens.stashExplorer.enabled` configuration setting since users can add or remove custom views natively now
 - Removes unneeded `Toggle Git Stashed Explorer` command (`gitlens.stashExplorer.toggle`) since users can add or remove custom views natively now
+- Removes the `gitlens.theme.annotations.file.hover.separateLines` configuration setting
 
 ## Fixed
 - Fixes jumpiness when opening a diff to a certain line
diff --git a/README.md b/README.md
index d2cde4e..6f82734 100644
--- a/README.md
+++ b/README.md
@@ -318,14 +318,13 @@ GitLens is highly customizable and provides many configuration settings to allow
 
 |Name | Description
 |-----|------------
-|`gitlens.theme.annotations.file.gutter.separateLines`|Specifies whether or not gutter blame annotations will be separated by a small gap
+|`gitlens.theme.annotations.file.gutter.separateLines`|Specifies whether or not gutter blame annotations will have line separators
 |`gitlens.theme.annotations.file.gutter.dark.backgroundColor`|Specifies the dark theme background color of the gutter blame annotations
 |`gitlens.theme.annotations.file.gutter.light.backgroundColor`|Specifies the light theme background color of the gutter blame annotations
 |`gitlens.theme.annotations.file.gutter.dark.foregroundColor`|Specifies the dark theme foreground color of the gutter blame annotations
 |`gitlens.theme.annotations.file.gutter.light.foregroundColor`|Specifies the light theme foreground color of the gutter blame annotations
 |`gitlens.theme.annotations.file.gutter.dark.uncommittedForegroundColor`|Specifies the dark theme foreground color of an uncommitted line in the gutter blame annotations
 |`gitlens.theme.annotations.file.gutter.light.uncommittedForegroundColor`|Specifies the light theme foreground color of an uncommitted line in the gutter blame annotations
-|`gitlens.theme.annotations.file.hover.separateLines`|Specifies whether or not hover blame annotations will be separated by a small gap (if heatmap is enabled)
 |`gitlens.theme.annotations.line.trailing.dark.backgroundColor`|Specifies the dark theme background color of the trailing blame annotation
 |`gitlens.theme.annotations.line.trailing.light.backgroundColor`|Specifies the light theme background color of the trailing blame annotation
 |`gitlens.theme.annotations.line.trailing.dark.foregroundColor`|Specifies the dark theme foreground color of the trailing blame annotation
diff --git a/package.json b/package.json
index df2802d..b6d444f 100644
--- a/package.json
+++ b/package.json
@@ -508,11 +508,6 @@
                     "default": "rgba(0, 188, 242, 0.6)",
                     "description": "Specifies the light theme foreground color of an uncommitted line in the gutter blame annotations. Must be a valid css color"
                 },
-                "gitlens.theme.annotations.file.hover.separateLines": {
-                    "type": "boolean",
-                    "default": false,
-                    "description": "Specifies whether or not hover blame annotations will be separated by a small gap (if heatmap is enabled)"
-                },
                 "gitlens.theme.annotations.line.trailing.dark.backgroundColor": {
                     "type": "string",
                     "default": null,
diff --git a/src/annotations/annotations.ts b/src/annotations/annotations.ts
index 47161c0..3ab73d6 100644
--- a/src/annotations/annotations.ts
+++ b/src/annotations/annotations.ts
@@ -142,17 +142,18 @@ export class Annotations {
             before: {
                 borderStyle: borderStyle,
                 borderWidth: borderWidth,
-                height: cfgFileTheme.separateLines ? 'calc(100% - 1px)' : '100%',
-                margin: '0 26px 0 0',
-                textDecoration: 'none'
+                height: '100%',
+                margin: '0 26px -1px 0'
             },
             dark: {
                 backgroundColor: cfgFileTheme.dark.backgroundColor || undefined,
-                color: cfgFileTheme.dark.foregroundColor || themeDefaults.annotations.file.gutter.dark.foregroundColor
+                color: cfgFileTheme.dark.foregroundColor || themeDefaults.annotations.file.gutter.dark.foregroundColor,
+                textDecoration: cfgFileTheme.separateLines ? 'overline solid rgba(0, 0, 0, .2)' : 'none'
             } as DecorationInstanceRenderOptions,
             light: {
                 backgroundColor: cfgFileTheme.light.backgroundColor || undefined,
-                color: cfgFileTheme.light.foregroundColor || themeDefaults.annotations.file.gutter.light.foregroundColor
+                color: cfgFileTheme.light.foregroundColor || themeDefaults.annotations.file.gutter.light.foregroundColor,
+                textDecoration: cfgFileTheme.separateLines ? 'overline solid rgba(0, 0, 0, .05)' : 'none'
             } as DecorationInstanceRenderOptions
         } as IRenderOptions;
     }
@@ -172,7 +173,7 @@ export class Annotations {
                 borderStyle: 'solid',
                 borderWidth: '0 0 0 2px',
                 contentText: GlyphChars.ZeroWidthSpace,
-                height: cfgTheme.annotations.file.hover.separateLines ? 'calc(100% - 1px)' : '100%',
+                height: '100%',
                 margin: '0 26px 0 0',
                 textDecoration: 'none'
             }
diff --git a/src/annotations/gutterBlameAnnotationProvider.ts b/src/annotations/gutterBlameAnnotationProvider.ts
index 7816293..02d2001 100644
--- a/src/annotations/gutterBlameAnnotationProvider.ts
+++ b/src/annotations/gutterBlameAnnotationProvider.ts
@@ -36,6 +36,7 @@ export class GutterBlameAnnotationProvider extends BlameAnnotationProviderBase {
         const offset = this.uri.offset;
         const renderOptions = Annotations.gutterRenderOptions(this._config.theme, cfg.heatmap);
         const dateFormat = this._config.defaultDateFormat;
+        const separateLines = this._config.theme.annotations.file.gutter.separateLines;
 
         const decorations: DecorationOptions[] = [];
         const document = this.document;
@@ -58,7 +59,18 @@ export class GutterBlameAnnotationProvider extends BlameAnnotationProviderBase {
                 if (cfg.compact && !compacted) {
                     // Since we are wiping out the contextText make sure to copy the objects
                     gutter.renderOptions = { ...gutter.renderOptions };
-                    gutter.renderOptions.before = { ...gutter.renderOptions.before, ...{ contentText: GlyphChars.Space.repeat(gutter.renderOptions!.before!.contentText!.length) } }; // !.before!.contentText = GlyphChars.Space.repeat(gutter.renderOptions!.before!.contentText!.length);
+                    gutter.renderOptions.before = {
+                        ...gutter.renderOptions.before,
+                        ...{ contentText: GlyphChars.Space.repeat(gutter.renderOptions!.before!.contentText!.length) }
+                    };
+
+                    if (separateLines) {
+                        gutter.renderOptions.dark = { ...gutter.renderOptions.dark };
+                        gutter.renderOptions.dark.before = { ...gutter.renderOptions.dark.before, ...{ textDecoration: 'none' } };
+                        gutter.renderOptions.light = { ...gutter.renderOptions.light };
+                        gutter.renderOptions.light.before = { ...gutter.renderOptions.light.before, ...{ textDecoration: 'none' } };
+                    }
+
                     compacted = true;
                 }
 
@@ -78,16 +90,9 @@ export class GutterBlameAnnotationProvider extends BlameAnnotationProviderBase {
             }
 
             compacted = false;
-            gutter = Annotations.gutter(commit, cfg.format, options, renderOptions);
+            previousSha = l.sha;
 
-            // TODO: Remove this "if" once vscode 1.15 ships - since empty lines won't be "missing" anymore -- Woo!
-            if (cfg.compact) {
-                const isEmptyOrWhitespace = document.lineAt(line).isEmptyOrWhitespace;
-                previousSha = isEmptyOrWhitespace ? undefined : l.sha;
-            }
-            else {
-                previousSha = l.sha;
-            }
+            gutter = Annotations.gutter(commit, cfg.format, options, renderOptions);
 
             if (cfg.heatmap.enabled) {
                 Annotations.applyHeatmap(gutter, commit.date, now);
diff --git a/src/configuration.ts b/src/configuration.ts
index f4cc20b..3d2709e 100644
--- a/src/configuration.ts
+++ b/src/configuration.ts
@@ -134,10 +134,6 @@ export interface IThemeConfig {
                     uncommittedForegroundColor: string | null;
                 };
             };
-
-            hover: {
-                separateLines: boolean;
-            };
         };
 
         line: {
@@ -181,9 +177,6 @@ export const themeDefaults: IThemeConfig = {
                     foregroundColor: 'rgb(116, 116, 116)',
                     uncommittedForegroundColor: null
                 }
-            },
-            hover: {
-                separateLines: false
             }
         },
         line: {