Skip to content

Commit 25a553c

Browse files
authored
Merge pull request #948 from ben-p-commits/ben/text-wrapping-preference
Add preference for text wrapping in editor, add command palette options for text editing prefs
2 parents 52e6898 + 8bcb035 commit 25a553c

File tree

6 files changed

+56
-7
lines changed

6 files changed

+56
-7
lines changed

CodeEdit.xcodeproj/project.pbxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3292,7 +3292,7 @@
32923292
repositoryURL = "https://github.com/CodeEditApp/CodeEditTextView.git";
32933293
requirement = {
32943294
kind = exactVersion;
3295-
version = 0.2.2;
3295+
version = 0.3.0;
32963296
};
32973297
};
32983298
58F2EB18292FB91C004A9BDE /* XCRemoteSwiftPackageReference "Preferences" */ = {

CodeEdit.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodeEdit/Features/AppPreferences/Model/Text Editing/TextEditingPreferences.swift

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,13 @@ extension AppPreferences {
2121

2222
var autocompleteBraces: Bool = true
2323

24+
// A flag indicating whether to wrap lines to editor width
25+
var wrapLinesToEditorWidth: Bool = true
26+
2427
/// Default initializer
25-
init() {}
28+
init() {
29+
self.populateCommands()
30+
}
2631

2732
/// Explicit decoder init for setting default values when key is not present in `JSON`
2833
init(from decoder: Decoder) throws {
@@ -33,6 +38,38 @@ extension AppPreferences {
3338
Bool.self, forKey: .enableTypeOverCompletion) ?? true
3439
self.autocompleteBraces = try container.decodeIfPresent(Bool.self,
3540
forKey: .autocompleteBraces) ?? true
41+
self.wrapLinesToEditorWidth = try container.decodeIfPresent(Bool.self,
42+
forKey: .wrapLinesToEditorWidth) ?? true
43+
self.populateCommands()
44+
}
45+
46+
/// Adds toggle-able preferences to the command palette via shared `CommandManager`
47+
private func populateCommands() {
48+
let mgr = CommandManager.shared
49+
50+
mgr.addCommand(
51+
name: "Toggle Type-Over Completion",
52+
title: "Toggle Type-Over Completion",
53+
id: "prefs.text_editing.type_over_completion",
54+
command: CommandClosureWrapper {
55+
AppPreferencesModel.shared.preferences.textEditing.enableTypeOverCompletion.toggle()
56+
})
57+
58+
mgr.addCommand(
59+
name: "Toggle Autocomplete Braces",
60+
title: "Toggle Autocomplete Braces",
61+
id: "prefs.text_editing.autocomplete_braces",
62+
command: CommandClosureWrapper {
63+
AppPreferencesModel.shared.preferences.textEditing.autocompleteBraces.toggle()
64+
})
65+
66+
mgr.addCommand(
67+
name: "Toggle Word Wrap",
68+
title: "Toggle Word Wrap",
69+
id: "prefs.text_editing.wrap_lines_to_editor_width",
70+
command: CommandClosureWrapper {
71+
AppPreferencesModel.shared.preferences.textEditing.wrapLinesToEditorWidth.toggle()
72+
})
3673
}
3774
}
3875

CodeEdit/Features/AppPreferences/Sections/TextEditingPreferences/TextEditingPreferencesView.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ struct TextEditingPreferencesView: View {
4242
autocompleteBraces
4343
enableTypeOverCompletion
4444
}
45+
PreferencesSection("Line Wrapping") {
46+
wrapLinesToEditorWidth
47+
}
4548
}
4649
}
4750

@@ -75,4 +78,12 @@ struct TextEditingPreferencesView: View {
7578
Text("Enable type-over completion")
7679
}
7780
}
81+
82+
private var wrapLinesToEditorWidth: some View {
83+
HStack {
84+
Toggle("Wrap lines to editor width", isOn: $prefs.preferences.textEditing.wrapLinesToEditorWidth)
85+
Text("Wrap lines to editor width")
86+
}
87+
}
88+
7889
}

CodeEdit/Features/CodeFile/CodeFileView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct CodeFileView: View {
7070
font: $font,
7171
tabWidth: $prefs.preferences.textEditing.defaultTabWidth,
7272
lineHeight: .constant(1.2), // TODO: Add to preferences
73+
wrapLines: $prefs.preferences.textEditing.wrapLinesToEditorWidth,
7374
cursorPosition: codeFile.$cursorPosition
7475
)
7576
.id(codeFile.fileURL)

Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)