From b522352a2ba7bd3139fec0c2799d1c27b07a34f3 Mon Sep 17 00:00:00 2001 From: Evan Jarrett Date: Fri, 26 Dec 2025 13:07:09 -0600 Subject: [PATCH] appview/repo/fragments: improve diff copy behavior Replace block-level divs with inline spans and use flex-col for visual line stacking. Move whitespace-pre to content spans only. This allows text content copied out of diffs to match the UI, and not copy hidden newlines. Signed-off-by: Evan Jarrett --- .../templates/repo/fragments/splitDiff.html | 70 +++++++++---------- .../templates/repo/fragments/unifiedDiff.html | 43 ++++++------ 2 files changed, 56 insertions(+), 57 deletions(-) diff --git a/appview/pages/templates/repo/fragments/splitDiff.html b/appview/pages/templates/repo/fragments/splitDiff.html index 1fe3c9a4..de12f8ae 100644 --- a/appview/pages/templates/repo/fragments/splitDiff.html +++ b/appview/pages/templates/repo/fragments/splitDiff.html @@ -3,59 +3,59 @@ {{- $lineNrStyle := "min-w-[3.5rem] flex-shrink-0 select-none text-right bg-white dark:bg-gray-800" -}} {{- $linkStyle := "text-gray-400 dark:text-gray-500 hover:underline" -}} {{- $lineNrSepStyle := "pr-2 border-r border-gray-200 dark:border-gray-700" -}} -{{- $containerStyle := "flex min-w-full items-center target:border target:rounded-sm target:border-yellow-200 target:dark:border-yellow-700 scroll-mt-20" -}} +{{- $containerStyle := "inline-flex w-full items-center target:border target:rounded-sm target:border-yellow-200 target:dark:border-yellow-700 scroll-mt-20" -}} {{- $emptyStyle := "bg-gray-200/30 dark:bg-gray-700/30" -}} {{- $addStyle := "bg-green-100 dark:bg-green-800/30 text-green-700 dark:text-green-400" -}} {{- $delStyle := "bg-red-100 dark:bg-red-800/30 text-red-700 dark:text-red-400 " -}} {{- $ctxStyle := "bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400" -}} {{- $opStyle := "w-5 flex-shrink-0 select-none text-center" -}}
-
{{- range .TextFragments -}}
···
+
{{- range .TextFragments -}}··· {{- range .LeftLines -}} {{- if .IsEmpty -}} -
-
-
- -
+ + + + + {{- else if eq .Op.String "-" -}} -
- -
{{ .Op.String }}
-
{{ .Content }}
-
+ + {{ .LineNumber }} + {{ .Op.String }} + {{ .Content }} + {{- else if eq .Op.String " " -}} -
- -
{{ .Op.String }}
-
{{ .Content }}
-
+ + {{ .LineNumber }} + {{ .Op.String }} + {{ .Content }} + {{- end -}} {{- end -}} - {{- end -}}
+ {{- end -}}
-
{{- range .TextFragments -}}
···
+
{{- range .TextFragments -}}··· {{- range .RightLines -}} {{- if .IsEmpty -}} -
-
-
- -
+ + + + + {{- else if eq .Op.String "+" -}} -
- -
{{ .Op.String }}
-
{{ .Content }}
-
+ + {{ .LineNumber }} + {{ .Op.String }} + {{ .Content }} + {{- else if eq .Op.String " " -}} -
- -
{{ .Op.String }}
-
{{ .Content }}
-
+ + {{ .LineNumber }} + {{ .Op.String }} + {{ .Content }} + {{- end -}} {{- end -}} - {{- end -}}
+ {{- end -}} {{ end }} diff --git a/appview/pages/templates/repo/fragments/unifiedDiff.html b/appview/pages/templates/repo/fragments/unifiedDiff.html index e036410d..e247089c 100644 --- a/appview/pages/templates/repo/fragments/unifiedDiff.html +++ b/appview/pages/templates/repo/fragments/unifiedDiff.html @@ -1,47 +1,46 @@ {{ define "repo/fragments/unifiedDiff" }} {{ $name := .Id }} -
{{- range .TextFragments -}}
···
+
{{- range .TextFragments -}}··· {{- $oldStart := .OldPosition -}} {{- $newStart := .NewPosition -}} {{- $lineNrStyle := "min-w-[3.5rem] flex-shrink-0 select-none text-right bg-white dark:bg-gray-800 target:bg-yellow-200 target:dark:bg-yellow-600" -}} {{- $linkStyle := "text-gray-400 dark:text-gray-500 hover:underline" -}} {{- $lineNrSepStyle1 := "" -}} {{- $lineNrSepStyle2 := "pr-2 border-r border-gray-200 dark:border-gray-700" -}} - {{- $containerStyle := "flex min-w-full items-center target:border target:rounded-sm target:border-yellow-200 target:dark:border-yellow-700 scroll-mt-20" -}} + {{- $containerStyle := "inline-flex w-full items-center target:border target:rounded-sm target:border-yellow-200 target:dark:border-yellow-700 scroll-mt-20" -}} {{- $addStyle := "bg-green-100 dark:bg-green-800/30 text-green-700 dark:text-green-400 " -}} {{- $delStyle := "bg-red-100 dark:bg-red-800/30 text-red-700 dark:text-red-400 " -}} {{- $ctxStyle := "bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400" -}} {{- $opStyle := "w-5 flex-shrink-0 select-none text-center" -}} {{- range .Lines -}} {{- if eq .Op.String "+" -}} -
-
- -
{{ .Op.String }}
-
{{ .Line }}
-
+ + + {{ $newStart }} + {{ .Op.String }} + {{ .Line }} + {{- $newStart = add64 $newStart 1 -}} {{- end -}} {{- if eq .Op.String "-" -}} -
- -
-
{{ .Op.String }}
-
{{ .Line }}
-
+ + {{ $oldStart }} + + {{ .Op.String }} + {{ .Line }} + {{- $oldStart = add64 $oldStart 1 -}} {{- end -}} {{- if eq .Op.String " " -}} -
- - -
{{ .Op.String }}
-
{{ .Line }}
-
+ + {{ $oldStart }} + {{ $newStart }} + {{ .Op.String }} + {{ .Line }} + {{- $newStart = add64 $newStart 1 -}} {{- $oldStart = add64 $oldStart 1 -}} {{- end -}} {{- end -}} - {{- end -}}
+ {{- end -}} {{ end }} - -- 2.43.0