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); +}