summaryrefslogtreecommitdiff
path: root/Hutch/App/AppStorageKeys.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-01 13:50:09 -0500
committerChristian Cleberg <[email protected]>2026-04-01 13:50:09 -0500
commite84e5543be9be548784859f4b082b9d7a3122f15 (patch)
tree0aa941558514adc1be7cdf5140c57bb3781ee1ad /Hutch/App/AppStorageKeys.swift
parent109b0ea7e859de2d8b5a4dc22bf0472fd3b08eaa (diff)
downloadhutch-e84e5543be9be548784859f4b082b9d7a3122f15.tar.gz
hutch-e84e5543be9be548784859f4b082b9d7a3122f15.tar.bz2
hutch-e84e5543be9be548784859f4b082b9d7a3122f15.zip
Rewrite file viewer with pinned gutter, syntax highlighting, and toolbar
Replace the SwiftUI-only CodeFileTextView with a UIViewRepresentable backed by CodeFileUIView. The previous approach could not support a fixed line number gutter while independently scrolling code content horizontally. Changes: - Gutter is pinned outside the horizontal scroll view and never scrolls left - Vertical scroll is handled by a single outer UIScrollView shared by both the gutter and code content, keeping them in sync - Line numbers are right-aligned in a fixed-width gutter calculated from the total line count - Syntax highlighting via Splash for .swift files, with plain monospaced rendering as fallback for unsupported file types - Wrap toggle persisted via AppStorage (wrapRepositoryFileLines) - Bottom toolbar replaces the floating Share button, adding Copy All and Wrap toggle actions - Copy All shows a brief checkmark confirmation that resets after 2 seconds - Font fixed at SFMono-Regular 12pt, not scaled with Dynamic Type Implements: https://todo.sr.ht/~ccleberg/Hutch/7
Diffstat (limited to 'Hutch/App/AppStorageKeys.swift')
-rw-r--r--Hutch/App/AppStorageKeys.swift1
1 files changed, 1 insertions, 0 deletions
diff --git a/Hutch/App/AppStorageKeys.swift b/Hutch/App/AppStorageKeys.swift
index 708b4ce..87ec420 100644
--- a/Hutch/App/AppStorageKeys.swift
+++ b/Hutch/App/AppStorageKeys.swift
@@ -2,4 +2,5 @@
enum AppStorageKeys {
static let swipeActionsEnabled = "swipeActionsEnabled"
static let activeAccountID = "activeAccountID"
+ static let wrapRepositoryFileLines = "wrapRepositoryFileLines"
}