From 9ac4444a4b5fa9d8747c6e3de49f66afa2d36f4d Mon Sep 17 00:00:00 2001
From: shumadrid <195762734+shumadrid@users.noreply.github.com>
Date: Tue, 1 Apr 2025 04:22:11 +0200
Subject: [PATCH 1/3] feat: collapse unchanged lines in split diff view
---
src/ui/diff/splitDiffView.ts | 12 ++++++++----
styles.css | 15 +++++++++++++++
2 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/src/ui/diff/splitDiffView.ts b/src/ui/diff/splitDiffView.ts
index 7ce60364..52a718d1 100644
--- a/src/ui/diff/splitDiffView.ts
+++ b/src/ui/diff/splitDiffView.ts
@@ -5,6 +5,10 @@ import { SimpleGit } from "src/gitManager/simpleGit";
import type ObsidianGit from "src/main";
import type { DiffViewState } from "src/types";
+import { history, indentWithTab, standardKeymap } from "@codemirror/commands";
+import { MergeView } from "@codemirror/merge";
+import { highlightSelectionMatches, search } from "@codemirror/search";
+import { EditorState, Transaction } from "@codemirror/state";
import {
drawSelection,
EditorView,
@@ -12,10 +16,6 @@ import {
lineNumbers,
ViewPlugin,
} from "@codemirror/view";
-import { EditorState, Transaction } from "@codemirror/state";
-import { MergeView } from "@codemirror/merge";
-import { history, indentWithTab, standardKeymap } from "@codemirror/commands";
-import { highlightSelectionMatches, search } from "@codemirror/search";
import { GitError } from "simple-git";
// This class is not extending `FileView', because it needs a `TFile`, which is not possible for dot files like `.gitignore`, which this editor should support as well.`
@@ -358,6 +358,10 @@ export default class SplitDiffView extends ItemView {
this.mergeView = new MergeView({
b: bState,
a: aState,
+ collapseUnchanged: {
+ minSize: 5,
+ margin: 3,
+ },
diffConfig: {
scanLimit: this.bIsEditable ? 1000 : 10000, // default is 500
},
diff --git a/styles.css b/styles.css
index 2a9ffb45..571205ac 100644
--- a/styles.css
+++ b/styles.css
@@ -590,3 +590,18 @@
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,');
}
+
+/* Override styling of Codemirror merge view "collapsed lines" indicator */
+.git-split-diff-view .ͼ2 .cm-collapsedLines {
+ background: linear-gradient(
+ to bottom,
+ transparent 0,
+ var(--background-secondary-alt) 35%,
+ var(--background-secondary-alt) 65%,
+ transparent 100%
+ );
+ border-radius: var(--radius-m);
+ color: var(--text-accent);
+ font-size: var(--font-small);
+ padding: var(--size-4-1) var(--size-4-1);
+}
From 3b6c6e18c36e73b73ef3f4db031e4cace6441ab2 Mon Sep 17 00:00:00 2001
From: Vinzent
Date: Tue, 1 Apr 2025 16:14:46 +0200
Subject: [PATCH 2/3] refactor: increase sizes
---
src/ui/diff/splitDiffView.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/ui/diff/splitDiffView.ts b/src/ui/diff/splitDiffView.ts
index 52a718d1..ed95764f 100644
--- a/src/ui/diff/splitDiffView.ts
+++ b/src/ui/diff/splitDiffView.ts
@@ -359,8 +359,8 @@ export default class SplitDiffView extends ItemView {
b: bState,
a: aState,
collapseUnchanged: {
- minSize: 5,
- margin: 3,
+ minSize: 6,
+ margin: 4,
},
diffConfig: {
scanLimit: this.bIsEditable ? 1000 : 10000, // default is 500
From 6897fcda5131dab6bc035f7ed567bbf8aea75d82 Mon Sep 17 00:00:00 2001
From: Vinzent
Date: Tue, 1 Apr 2025 16:15:47 +0200
Subject: [PATCH 3/3] fix: better styling
---
styles.css | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/styles.css b/styles.css
index 571205ac..9c490e7c 100644
--- a/styles.css
+++ b/styles.css
@@ -593,15 +593,13 @@
/* Override styling of Codemirror merge view "collapsed lines" indicator */
.git-split-diff-view .ͼ2 .cm-collapsedLines {
- background: linear-gradient(
- to bottom,
- transparent 0,
- var(--background-secondary-alt) 35%,
- var(--background-secondary-alt) 65%,
- transparent 100%
- );
+ background: var(--interactive-normal);
border-radius: var(--radius-m);
color: var(--text-accent);
font-size: var(--font-small);
padding: var(--size-4-1) var(--size-4-1);
}
+.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
+ background: var(--interactive-hover);
+ color: var(--text-accent-hover);
+}