forked from CodeEditApp/CodeEdit
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathInvisiblesSettingsView.swift
More file actions
117 lines (107 loc) · 4.88 KB
/
InvisiblesSettingsView.swift
File metadata and controls
117 lines (107 loc) · 4.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
//
// InvisiblesSettingsView.swift
// CodeEdit
//
// Created by Khan Winter on 6/13/25.
//
import SwiftUI
struct InvisiblesSettingsView: View {
typealias Config = SettingsData.TextEditingSettings.InvisibleCharactersConfig
@Binding var invisibleCharacters: Config
@Environment(\.dismiss)
private var dismiss
var body: some View {
VStack(spacing: 0) {
Form {
Section {
VStack {
Toggle(isOn: $invisibleCharacters.showSpaces) { Text("Show Spaces") }
if invisibleCharacters.showSpaces {
TextField(
text: $invisibleCharacters.spaceReplacement,
prompt: Text("Default: \(Config.default.spaceReplacement)")
) {
Text("Character used to render spaces")
.foregroundStyle(.secondary)
.font(.caption)
}
.autocorrectionDisabled()
}
}
VStack {
Toggle(isOn: $invisibleCharacters.showTabs) { Text("Show Tabs") }
if invisibleCharacters.showTabs {
TextField(
text: $invisibleCharacters.tabReplacement,
prompt: Text("Default: \(Config.default.tabReplacement)")
) {
Text("Character used to render tabs")
.foregroundStyle(.secondary)
.font(.caption)
}
.autocorrectionDisabled()
}
}
VStack {
Toggle(isOn: $invisibleCharacters.showLineEndings) { Text("Show Line Endings") }
if invisibleCharacters.showLineEndings {
TextField(
text: $invisibleCharacters.lineFeedReplacement,
prompt: Text("Default: \(Config.default.lineFeedReplacement)")
) {
Text("Character used to render line feeds (\\n)")
.foregroundStyle(.secondary)
.font(.caption)
}
.autocorrectionDisabled()
TextField(
text: $invisibleCharacters.carriageReturnReplacement,
prompt: Text("Default: \(Config.default.carriageReturnReplacement)")
) {
Text("Character used to render carriage returns (Microsoft-style line endings)")
.foregroundStyle(.secondary)
.font(.caption)
}
.autocorrectionDisabled()
TextField(
text: $invisibleCharacters.paragraphSeparatorReplacement,
prompt: Text("Default: \(Config.default.paragraphSeparatorReplacement)")
) {
Text("Character used to render paragraph separators")
.foregroundStyle(.secondary)
.font(.caption)
}
.autocorrectionDisabled()
TextField(
text: $invisibleCharacters.lineSeparatorReplacement,
prompt: Text("Default: \(Config.default.lineSeparatorReplacement)")
) {
Text("Character used to render line separators")
.foregroundStyle(.secondary)
.font(.caption)
}
.autocorrectionDisabled()
}
}
} header: {
Text("Invisible Characters")
Text("Toggle whitespace symbols CodeEdit will render with replacement characters.")
}
.textFieldStyle(.roundedBorder)
}
.formStyle(.grouped)
Divider()
HStack {
Spacer()
Button {
dismiss()
} label: {
Text("Done")
.frame(minWidth: 56)
}
.buttonStyle(.borderedProminent)
}
.padding()
}
}
}