Migrate Edit settings to SwiftUI

This commit is contained in:
1024jp 2024-02-16 00:55:04 +09:00
parent 3ef99d7e1e
commit 9c290736d4
6 changed files with 1914 additions and 2416 deletions

View File

@ -50,7 +50,6 @@
2A10D1001E7088B00027192A /* WindowPane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D1031E7088B00027192A /* WindowPane.storyboard */; };
2A10D10A1E708CDF0027192A /* KeyBindingsPane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D1081E708CDF0027192A /* KeyBindingsPane.storyboard */; };
2A10D1281E714D230027192A /* AppearancePane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D1261E714D230027192A /* AppearancePane.storyboard */; };
2A10D1301E7152F30027192A /* EditPane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D12E1E7152F30027192A /* EditPane.storyboard */; };
2A10D1381E715E5B0027192A /* FormatPane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D1361E715E5B0027192A /* FormatPane.storyboard */; };
2A10D1481E7477D30027192A /* StyledButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A10D1471E7477D30027192A /* StyledButton.swift */; };
2A10D1491E7477D30027192A /* StyledButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A10D1471E7477D30027192A /* StyledButton.swift */; };
@ -388,8 +387,6 @@
2A78BFA51D1B02ED00A583D2 /* WindowPaneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFA31D1B02ED00A583D2 /* WindowPaneController.swift */; };
2A78BFA71D1B05FB00A583D2 /* GeneralPaneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFA61D1B05FB00A583D2 /* GeneralPaneController.swift */; };
2A78BFA81D1B05FB00A583D2 /* GeneralPaneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFA61D1B05FB00A583D2 /* GeneralPaneController.swift */; };
2A78BFAD1D1B138D00A583D2 /* EditPaneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFAC1D1B138D00A583D2 /* EditPaneController.swift */; };
2A78BFAE1D1B138D00A583D2 /* EditPaneController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFAC1D1B138D00A583D2 /* EditPaneController.swift */; };
2A78BFB01D1B168E00A583D2 /* WebDocumentWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFAF1D1B168E00A583D2 /* WebDocumentWindowController.swift */; };
2A78BFB11D1B168E00A583D2 /* WebDocumentWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFAF1D1B168E00A583D2 /* WebDocumentWindowController.swift */; };
2A78BFB31D1B240900A583D2 /* UpdaterManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A78BFB21D1B240900A583D2 /* UpdaterManager.swift */; };
@ -584,6 +581,8 @@
2AB2913F245AAD74004CC203 /* Unicode.GeneralCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AB2913D245AAD74004CC203 /* Unicode.GeneralCategory.swift */; };
2AB541DA20A5B6A400367DD5 /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AB541D920A5B6A400367DD5 /* NSView.swift */; };
2AB541DB20A5B6A400367DD5 /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AB541D920A5B6A400367DD5 /* NSView.swift */; };
2AB9E4B52B7E452F004E5BDC /* EditSettings.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 2AB9E4B32B7E452F004E5BDC /* EditSettings.xcstrings */; };
2AB9E4B62B7E452F004E5BDC /* EditSettings.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 2AB9E4B32B7E452F004E5BDC /* EditSettings.xcstrings */; };
2ABBACA11E3F1D1C00A080E7 /* NSTextStorage+ScriptingSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ABBACA01E3F1D1C00A080E7 /* NSTextStorage+ScriptingSupport.swift */; };
2ABBACA21E3F1D1C00A080E7 /* NSTextStorage+ScriptingSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ABBACA01E3F1D1C00A080E7 /* NSTextStorage+ScriptingSupport.swift */; };
2ABC76241909BF5200D2B592 /* Themes in Resources */ = {isa = PBXBuildFile; fileRef = 2A7846DA18FE035E006BDF00 /* Themes */; };
@ -645,7 +644,6 @@
2ACDE28D2406B9C000FC31EC /* AppearancePane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D1261E714D230027192A /* AppearancePane.storyboard */; };
2ACDE2952406B9C000FC31EC /* StatusBar.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A6602CE1D05BD72003E8D87 /* StatusBar.storyboard */; };
2ACDE2962406B9C000FC31EC /* NavigationBar.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A5F7CA31D152589001D83BC /* NavigationBar.storyboard */; };
2ACDE2972406B9C000FC31EC /* EditPane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D12E1E7152F30027192A /* EditPane.storyboard */; };
2ACDE2992406B9C000FC31EC /* SnippetsPane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2ADF3BFF1E6D7345009125BB /* SnippetsPane.storyboard */; };
2ACDE29A2406B9C000FC31EC /* FindPanelFieldView.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A5D13401D1FE34F00D38E6A /* FindPanelFieldView.storyboard */; };
2ACDE29C2406B9C000FC31EC /* FormatPane.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10D1361E715E5B0027192A /* FormatPane.storyboard */; };
@ -780,6 +778,8 @@
2AFE848722AE71130001C4ED /* TextContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AFE848522AE71130001C4ED /* TextContainer.swift */; };
2AFECF5A2171C0E60065A7DE /* Bundle+AppInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AFECF592171C0E60065A7DE /* Bundle+AppInfo.swift */; };
2AFECF5B2171C0E60065A7DE /* Bundle+AppInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AFECF592171C0E60065A7DE /* Bundle+AppInfo.swift */; };
2AFFA7C62B170097005652CD /* EditSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AFFA7C52B170097005652CD /* EditSettingsView.swift */; };
2AFFA7C72B170097005652CD /* EditSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AFFA7C52B170097005652CD /* EditSettingsView.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -847,7 +847,6 @@
2A10D1021E7088B00027192A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/WindowPane.storyboard; sourceTree = "<group>"; };
2A10D1091E708CDF0027192A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/KeyBindingsPane.storyboard; sourceTree = "<group>"; };
2A10D1271E714D230027192A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/AppearancePane.storyboard; sourceTree = "<group>"; };
2A10D12F1E7152F30027192A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/EditPane.storyboard; sourceTree = "<group>"; };
2A10D1371E715E5B0027192A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/FormatPane.storyboard; sourceTree = "<group>"; };
2A10D1471E7477D30027192A /* StyledButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StyledButton.swift; sourceTree = "<group>"; };
2A1125C023F180FF006A1DB2 /* LineRangeCacheableTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineRangeCacheableTests.swift; sourceTree = "<group>"; };
@ -1047,7 +1046,6 @@
2A7846DA18FE035E006BDF00 /* Themes */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Themes; sourceTree = "<group>"; };
2A78BFA31D1B02ED00A583D2 /* WindowPaneController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WindowPaneController.swift; sourceTree = "<group>"; };
2A78BFA61D1B05FB00A583D2 /* GeneralPaneController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneralPaneController.swift; sourceTree = "<group>"; };
2A78BFAC1D1B138D00A583D2 /* EditPaneController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditPaneController.swift; sourceTree = "<group>"; };
2A78BFAF1D1B168E00A583D2 /* WebDocumentWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebDocumentWindowController.swift; sourceTree = "<group>"; };
2A78BFB21D1B240900A583D2 /* UpdaterManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdaterManager.swift; sourceTree = "<group>"; };
2A78BFBB1D1B376000A583D2 /* ServicesProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServicesProvider.swift; sourceTree = "<group>"; };
@ -1165,6 +1163,7 @@
2AB2913D245AAD74004CC203 /* Unicode.GeneralCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Unicode.GeneralCategory.swift; sourceTree = "<group>"; };
2AB541D920A5B6A400367DD5 /* NSView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSView.swift; sourceTree = "<group>"; };
2AB8C7BA1D49283400EFC3BC /* SyntaxManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SyntaxManager.swift; sourceTree = "<group>"; };
2AB9E4B42B7E452F004E5BDC /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/EditSettings.xcstrings; sourceTree = "<group>"; };
2ABBACA01E3F1D1C00A080E7 /* NSTextStorage+ScriptingSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSTextStorage+ScriptingSupport.swift"; sourceTree = "<group>"; };
2ABEFB6923DC0CA0008769F4 /* EditorInfoCountOperationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorInfoCountOperationTests.swift; sourceTree = "<group>"; };
2ABF49E2221A54AD00239278 /* TextClipping.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextClipping.swift; sourceTree = "<group>"; };
@ -1252,7 +1251,6 @@
2AF0C12C1D3DABD000B6FCB6 /* Document+ScriptingSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Document+ScriptingSupport.swift"; sourceTree = "<group>"; };
2AF1229E2B7A3D50004BA1FF /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/AppearancePane.xcstrings; sourceTree = "<group>"; };
2AF1229F2B7A3D50004BA1FF /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/KeyBindingsPane.xcstrings; sourceTree = "<group>"; };
2AF122A02B7A3D50004BA1FF /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/EditPane.xcstrings; sourceTree = "<group>"; };
2AF122A12B7A3D50004BA1FF /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/WindowPane.xcstrings; sourceTree = "<group>"; };
2AF122A22B7A3D50004BA1FF /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/FormatPane.xcstrings; sourceTree = "<group>"; };
2AF122A32B7A3D50004BA1FF /* mul */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; name = mul; path = mul.lproj/GeneralPane.xcstrings; sourceTree = "<group>"; };
@ -1278,6 +1276,7 @@
2AFD328E2949B34A000ED1C5 /* RegularExpressionSyntaxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegularExpressionSyntaxTests.swift; sourceTree = "<group>"; };
2AFE848522AE71130001C4ED /* TextContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextContainer.swift; sourceTree = "<group>"; };
2AFECF592171C0E60065A7DE /* Bundle+AppInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+AppInfo.swift"; sourceTree = "<group>"; };
2AFFA7C52B170097005652CD /* EditSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditSettingsView.swift; sourceTree = "<group>"; };
4B7998191A1F1BCD0088D167 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
5454B928243C81C6009275BC /* CodeSigning-AdHoc.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CodeSigning-AdHoc.xcconfig"; sourceTree = "<group>"; };
5454B929243C81C7009275BC /* CodeSigning-Default.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CodeSigning-Default.xcconfig"; sourceTree = "<group>"; };
@ -1378,7 +1377,6 @@
2AC20A6F1E70819E0093B9C6 /* GeneralPane.storyboard */,
2A10D1261E714D230027192A /* AppearancePane.storyboard */,
2A10D1031E7088B00027192A /* WindowPane.storyboard */,
2A10D12E1E7152F30027192A /* EditPane.storyboard */,
2A10D1361E715E5B0027192A /* FormatPane.storyboard */,
2ADF3BFF1E6D7345009125BB /* SnippetsPane.storyboard */,
2A10D1081E708CDF0027192A /* KeyBindingsPane.storyboard */,
@ -1392,7 +1390,7 @@
2A78BFA61D1B05FB00A583D2 /* GeneralPaneController.swift */,
2A2792911D1DACC400F3FC5D /* AppearancePaneController.swift */,
2A78BFA31D1B02ED00A583D2 /* WindowPaneController.swift */,
2A78BFAC1D1B138D00A583D2 /* EditPaneController.swift */,
2AFFA7C52B170097005652CD /* EditSettingsView.swift */,
2A2792971D1E57DA00F3FC5D /* FormatPaneController.swift */,
2AA4D3731D1AA0AC001D261D /* KeyBindingsPaneController.swift */,
);
@ -2110,6 +2108,7 @@
259C2316077678DE00BA61C5 /* Localizable.strings */,
2A5E6FC32A723CE900E33EA7 /* InfoPlist.xcstrings */,
2A5E6FC62A723F3C00E33EA7 /* ServicesMenu.xcstrings */,
2AB9E4B32B7E452F004E5BDC /* EditSettings.xcstrings */,
2A954B232AB28B010070FB74 /* TextFind.xcstrings */,
2AAF93552A73DEE600CCC4A7 /* LineEnding.xcstrings */,
2A5E6FC02A72342700E33EA7 /* UnicodeNormalization.xcstrings */,
@ -2493,6 +2492,7 @@
2AE73EC9203520E100D8903B /* Acknowledgments.css in Resources */,
2A6F0D801B5500E100C2D03C /* Localizable.strings in Resources */,
2A5E6FC42A723CEA00E33EA7 /* InfoPlist.xcstrings in Resources */,
2AB9E4B52B7E452F004E5BDC /* EditSettings.xcstrings in Resources */,
2AAF93562A73DEE600CCC4A7 /* LineEnding.xcstrings in Resources */,
2A5E6FC12A72342700E33EA7 /* UnicodeNormalization.xcstrings in Resources */,
2A5E6FC72A723F3C00E33EA7 /* ServicesMenu.xcstrings in Resources */,
@ -2505,7 +2505,6 @@
2AA2E0141BFE12620087BDD6 /* UnicodeBlock.strings in Resources */,
2A836F811D572A5D0044E8EC /* Main.storyboard in Resources */,
2ACDE28D2406B9C000FC31EC /* AppearancePane.storyboard in Resources */,
2ACDE2972406B9C000FC31EC /* EditPane.storyboard in Resources */,
2ACDE29A2406B9C000FC31EC /* FindPanelFieldView.storyboard in Resources */,
2ACDE29C2406B9C000FC31EC /* FormatPane.storyboard in Resources */,
2ACDE29D2406B9C000FC31EC /* GeneralPane.storyboard in Resources */,
@ -2555,6 +2554,7 @@
2AE73EC8203520E000D8903B /* Acknowledgments.css in Resources */,
259C2318077678DE00BA61C5 /* Localizable.strings in Resources */,
2A5E6FC52A723CEA00E33EA7 /* InfoPlist.xcstrings in Resources */,
2AB9E4B62B7E452F004E5BDC /* EditSettings.xcstrings in Resources */,
2AAF93572A73DEE600CCC4A7 /* LineEnding.xcstrings in Resources */,
2A5E6FC22A72342700E33EA7 /* UnicodeNormalization.xcstrings in Resources */,
2A5E6FC82A723F3C00E33EA7 /* ServicesMenu.xcstrings in Resources */,
@ -2568,7 +2568,6 @@
2AA2E0131BFE12620087BDD6 /* UnicodeBlock.strings in Resources */,
2A836F801D572A5D0044E8EC /* Main.storyboard in Resources */,
2A10D1281E714D230027192A /* AppearancePane.storyboard in Resources */,
2A10D1301E7152F30027192A /* EditPane.storyboard in Resources */,
2A5D13421D1FE34F00D38E6A /* FindPanelFieldView.storyboard in Resources */,
2A10D1381E715E5B0027192A /* FormatPane.storyboard in Resources */,
2AC20A711E70819E0093B9C6 /* GeneralPane.storyboard in Resources */,
@ -2769,7 +2768,7 @@
2A9BF3C51D382BB100E3D3E2 /* EditorTextView+Transformation.swift in Sources */,
2A6FD9D21D38933100A59784 /* EditorTextViewController.swift in Sources */,
2AA45A4C1D2E871900A1A401 /* EditorViewController.swift in Sources */,
2A78BFAE1D1B138D00A583D2 /* EditPaneController.swift in Sources */,
2AFFA7C62B170097005652CD /* EditSettingsView.swift in Sources */,
2A5DCE8A1D18FFDB00D5D74C /* EncodingListView.swift in Sources */,
2A4257A81D22E0660086DAAD /* EncodingManager.swift in Sources */,
2A4682B31D2F6B580005410E /* FileDropItem.swift in Sources */,
@ -3133,7 +3132,7 @@
2A9BF3C41D382BB100E3D3E2 /* EditorTextView+Transformation.swift in Sources */,
2A6FD9D11D38933100A59784 /* EditorTextViewController.swift in Sources */,
2AA45A4B1D2E871900A1A401 /* EditorViewController.swift in Sources */,
2A78BFAD1D1B138D00A583D2 /* EditPaneController.swift in Sources */,
2AFFA7C72B170097005652CD /* EditSettingsView.swift in Sources */,
2AA106B02470F05F00979CB7 /* EncodingListView.swift in Sources */,
2A4257A71D22E0660086DAAD /* EncodingManager.swift in Sources */,
2A4682B21D2F6B580005410E /* FileDropItem.swift in Sources */,
@ -3437,15 +3436,6 @@
name = AppearancePane.storyboard;
sourceTree = "<group>";
};
2A10D12E1E7152F30027192A /* EditPane.storyboard */ = {
isa = PBXVariantGroup;
children = (
2A10D12F1E7152F30027192A /* Base */,
2AF122A02B7A3D50004BA1FF /* mul */,
);
name = EditPane.storyboard;
sourceTree = "<group>";
};
2A10D1361E715E5B0027192A /* FormatPane.storyboard */ = {
isa = PBXVariantGroup;
children = (
@ -3642,6 +3632,14 @@
name = SyntaxEditView.storyboard;
sourceTree = "<group>";
};
2AB9E4B32B7E452F004E5BDC /* EditSettings.xcstrings */ = {
isa = PBXVariantGroup;
children = (
2AB9E4B42B7E452F004E5BDC /* mul */,
);
name = EditSettings.xcstrings;
sourceTree = "<group>";
};
2AC20A6F1E70819E0093B9C6 /* GeneralPane.storyboard */ = {
isa = PBXVariantGroup;
children = (

View File

@ -1,548 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="6FT-QA-TTg">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
<capability name="Image references" minToolsVersion="12.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Edit Pane Controller-->
<scene sceneID="iXe-FN-1cU">
<objects>
<viewController id="6FT-QA-TTg" customClass="EditPaneController" customModule="CotEditor" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" horizontalHuggingPriority="750" verticalCompressionResistancePriority="250" id="4sX-tH-txQ">
<rect key="frame" x="0.0" y="0.0" width="600" height="572"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="3oL-k6-e6i">
<rect key="frame" x="72" y="0.0" width="456" height="572"/>
<subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nqq-MP-8Cp">
<rect key="frame" x="116" y="415" width="132" height="18"/>
<buttonCell key="cell" type="check" title="Smart copy/paste" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="3302">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.smartInsertAndDelete" id="Bqy-8G-kMn"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="a9Q-Qg-ppv">
<rect key="frame" x="116" y="393" width="108" height="18"/>
<buttonCell key="cell" type="check" title="Smart quotes" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Abx-fM-gyc">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.enableSmartQuotes" id="g44-ec-pXa"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="N1n-gE-ApS">
<rect key="frame" x="230" y="393" width="110" height="18"/>
<buttonCell key="cell" type="check" title="Smart dashes" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="nr1-0X-aBY">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.enableSmartDashes" id="SIR-DC-aa1"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Eul-Sk-7ow">
<rect key="frame" x="116" y="349" width="253" height="18"/>
<buttonCell key="cell" type="check" title="Automatically trim trailing whitespace" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="noP-hx-YeQ">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.autoTrimsTrailingWhitespace" id="7Lx-oj-piL"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Xio-Kn-lnJ">
<rect key="frame" x="136" y="327" width="217" height="18"/>
<buttonCell key="cell" type="check" title="Including whitespace-only lines" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Tma-Oh-F7v">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="enabled" keyPath="values.autoTrimsTrailingWhitespace" id="i8D-xn-tLM"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.trimsWhitespaceOnlyLines" id="Zho-Gi-oHE"/>
</connections>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PCw-Sh-dDO">
<rect key="frame" x="18" y="536" width="94" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="right" title="Indentation:" usesSingleLineMode="YES" id="9bX-ei-1x8">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6o6-2H-ikQ">
<rect key="frame" x="116" y="512" width="83" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="left" title="Indent width:" usesSingleLineMode="YES" id="3287">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J5U-m9-FvG" customClass="NumberTextField" customModule="CotEditor" customModuleProvider="target">
<rect key="frame" x="205" y="509" width="36" height="21"/>
<constraints>
<constraint firstAttribute="width" constant="36" id="2EE-jD-d5t"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" drawsBackground="YES" id="Hjz-Hk-xNk">
<numberFormatter key="formatter" formatterBehavior="default10_4" numberStyle="decimal" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="nLF-LO-SYb">
<real key="minimum" value="1"/>
<decimal key="maximum" value="99"/>
</numberFormatter>
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<allowedInputSourceLocales>
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
</allowedInputSourceLocales>
</textFieldCell>
<connections>
<accessibilityConnection property="title" destination="6o6-2H-ikQ" id="h1l-do-DqY"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.tabWidth" id="of5-C6-LVu"/>
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fr0-Ug-Vp1" customClass="AccessibleStepper" customModule="CotEditor" customModuleProvider="target">
<rect key="frame" x="242" y="506" width="19" height="28"/>
<stepperCell key="cell" continuous="YES" alignment="left" minValue="1" maxValue="99" doubleValue="1" id="W2Q-vb-HQ5"/>
<connections>
<accessibilityConnection property="title" destination="6o6-2H-ikQ" id="g4K-fN-JXe"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.tabWidth" id="gzU-DM-P9h"/>
</connections>
</stepper>
<textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DhT-LT-Lve">
<rect key="frame" x="262" y="512" width="47" height="16"/>
<textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="spaces" usesSingleLineMode="YES" id="as9-us-CuG">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LUh-bR-BEp">
<rect key="frame" x="116" y="487" width="277" height="18"/>
<buttonCell key="cell" type="check" title="Detect indent style on document opening" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="Cte-hW-0M3">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.detectsIndentStyle" id="PCg-mP-7IV"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="q35-Kk-wlB">
<rect key="frame" x="116" y="443" width="202" height="18"/>
<buttonCell key="cell" type="check" title="Indent selection with Tab key" bezelStyle="regularSquare" imagePosition="left" inset="2" id="aVn-PD-hen">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.indentWithTabKey" id="2lE-lf-xA8"/>
</connections>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8WW-uf-bLm">
<rect key="frame" x="45" y="300" width="67" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="right" title="Comment:" usesSingleLineMode="YES" id="EDl-AJ-1dK">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X2i-kL-uLT">
<rect key="frame" x="116" y="299" width="257" height="18"/>
<buttonCell key="cell" type="check" title="Append a space to comment delimiter" bezelStyle="regularSquare" imagePosition="left" inset="2" id="6Dw-5M-Gv0">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.appendsCommentSpacer" id="GWR-if-qk3"/>
</connections>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8I5-Lh-Ofn">
<rect key="frame" x="34" y="132" width="78" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="right" title="Completion:" usesSingleLineMode="YES" id="gDN-SU-sZH">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XNI-eS-U8G">
<rect key="frame" x="116" y="132" width="153" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Completion list includes:" usesSingleLineMode="YES" id="dLj-Kh-KtX">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WL7-y8-umX">
<rect key="frame" x="136" y="107" width="144" height="18"/>
<buttonCell key="cell" type="check" title="Words in document" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="EJZ-N6-54G">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="updateCompletionListWords:" target="6FT-QA-TTg" id="Ysj-CK-B1A"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.completesDocumentWords" id="nWa-9S-RY4"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="55Y-oF-UTC">
<rect key="frame" x="136" y="85" width="172" height="18"/>
<buttonCell key="cell" type="check" title="Words defined in syntax" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="1v9-7i-9RL">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="updateCompletionListWords:" target="6FT-QA-TTg" id="YhX-lo-aUe"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.completesSyntaxWords" id="qqd-yi-ehJ"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gY2-yd-rUU">
<rect key="frame" x="136" y="63" width="122" height="18"/>
<buttonCell key="cell" type="check" title="Standard words" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="c5j-0N-f2R">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="updateCompletionListWords:" target="6FT-QA-TTg" id="pGZ-Wm-H7s"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.completesStandardWords" id="UKJ-yc-0dY"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wCX-eB-XQx">
<rect key="frame" x="116" y="41" width="231" height="18"/>
<buttonCell key="cell" type="check" title="Suggest completions while typing" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="J1B-wA-rdr">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.autoComplete" id="pux-Cf-ByC"/>
</connections>
</button>
<textField hidden="YES" focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DcX-sg-7bi">
<rect key="frame" x="137" y="20" width="244" height="14"/>
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" title="Select at least one item to enable completion." id="dmb-pc-4M5">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="6FT-QA-TTg" name="hidden" keyPath="isValidCompletion" id="TTK-bp-5Ql"/>
</connections>
</textField>
<imageView hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VFE-8n-7LR">
<rect key="frame" x="118" y="20.5" width="17.5" height="15"/>
<imageCell key="cell" controlSize="small" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="j6S-Pl-WpO">
<imageReference key="image" image="exclamationmark.triangle.fill" catalog="system" symbolScale="default" renderingMode="original"/>
</imageCell>
<connections>
<binding destination="6FT-QA-TTg" name="hidden" keyPath="isValidCompletion" id="w9H-xT-opt"/>
</connections>
</imageView>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e7o-7Q-Iec">
<rect key="frame" x="31" y="416" width="81" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="right" title="Substitution:" usesSingleLineMode="YES" id="SqI-BC-ar9">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jwj-BA-jAE">
<rect key="frame" x="116" y="465" width="226" height="18"/>
<buttonCell key="cell" type="check" title="Automatically indent while typing" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="3285">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.autoIndent" id="bgG-ac-GxE"/>
</connections>
</button>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fUU-DY-nnn">
<rect key="frame" x="197" y="529" width="84" height="25"/>
<popUpButtonCell key="cell" type="push" title="Spaces" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" tag="1" imageScaling="proportionallyDown" inset="2" selectedItem="ZKV-jL-cQV" id="1dy-oP-fJL">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="jyP-jE-BgZ">
<items>
<menuItem title="Spaces" state="on" tag="1" id="ZKV-jL-cQV"/>
<menuItem title="Tabs" id="lVY-WF-4Yh"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<accessibilityConnection property="title" destination="vfb-GS-2rH" id="g6n-uF-lph"/>
<binding destination="TDG-Hm-YNe" name="selectedTag" keyPath="values.autoExpandTab" id="LIy-kq-cr7"/>
</connections>
</popUpButton>
<textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vfb-GS-2rH">
<rect key="frame" x="116" y="536" width="78" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Prefer using" id="jdu-bS-Jk1">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Dj-HL-UJe">
<rect key="frame" x="116" y="371" width="320" height="18"/>
<buttonCell key="cell" type="check" title="Automatically insert closing brackets and quotes" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="GRh-V2-hmW">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.balancesBrackets" id="vQc-iA-vJd"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Lkx-K3-8V4">
<rect key="frame" x="116" y="271" width="166" height="18"/>
<buttonCell key="cell" type="check" title="Link URLs in document" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="tPy-Ox-YpP">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.autoLinkDetectionKey" id="Fmd-Db-RD6"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ssD-a8-sSm">
<rect key="frame" x="116" y="227" width="261" height="18"/>
<buttonCell key="cell" type="check" title="Highlight matching braces “()” “[]” “{}”" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="RrC-LL-hid">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.highlightBraces" id="vBe-Ei-W6u"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0K5-c2-5an">
<rect key="frame" x="136" y="205" width="113" height="18"/>
<buttonCell key="cell" type="check" title="Highlight “&lt;&gt;”" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="al9-WE-Rqy">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="enabled" keyPath="values.highlightBraces" id="tM1-JW-ttP"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.highlightLtGt" id="dxE-FK-iuf"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="v22-99-ozp">
<rect key="frame" x="116" y="249" width="192" height="18"/>
<buttonCell key="cell" type="check" title="Check spelling while typing" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="3300">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.checkSpellingAsType" id="4UF-FQ-ien"/>
</connections>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="751" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nCa-bl-21K">
<rect key="frame" x="18" y="272" width="94" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="right" title="Content parse:" usesSingleLineMode="YES" id="lzy-Ei-xlT">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6oL-oP-LwE" customClass="DisableableTextField" customModule="CotEditor" customModuleProvider="target">
<rect key="frame" x="136" y="162" width="37" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Delay:" id="rOw-DD-kV5">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="TDG-Hm-YNe" name="enabled" keyPath="values.highlightSelectionInstance" id="u5a-Xm-hRp"/>
</connections>
</textField>
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DNu-ZN-Zyx" customClass="DisableableTextField" customModule="CotEditor" customModuleProvider="target">
<rect key="frame" x="234" y="162" width="49" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="seconds" id="ebJ-vk-RME">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="TDG-Hm-YNe" name="enabled" keyPath="values.highlightSelectionInstance" id="2bB-ee-IJT"/>
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="iCa-WZ-H0K">
<rect key="frame" x="217" y="158" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="0.25" maxValue="100" id="m2b-2v-WRa"/>
<connections>
<binding destination="TDG-Hm-YNe" name="enabled" keyPath="values.highlightSelectionInstance" id="hZ8-Lh-zKf"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.selectionInstanceHighlightDelay" id="J3s-JL-Ajb"/>
</connections>
</stepper>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aNs-iL-jLx">
<rect key="frame" x="116" y="183" width="240" height="18"/>
<buttonCell key="cell" type="check" title="Highlight instances of selected text" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Rcq-1K-8nz">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.highlightSelectionInstance" id="7nY-DX-W7b"/>
</connections>
</button>
<textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UIG-Pu-GIH">
<rect key="frame" x="175" y="160" width="40" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="YQO-Lk-mMK"/>
</constraints>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" drawsBackground="YES" id="N61-am-dX2">
<numberFormatter key="formatter" formatterBehavior="custom10_4" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="3" minimumFractionDigits="1" maximumFractionDigits="2" id="vuc-3b-Ves">
<real key="minimum" value="0.0"/>
<real key="maximum" value="100"/>
</numberFormatter>
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<accessibilityConnection property="title" destination="6oL-oP-LwE" id="7DL-ge-1QH"/>
<binding destination="TDG-Hm-YNe" name="enabled" keyPath="values.highlightSelectionInstance" id="FwW-ae-4Jd"/>
<binding destination="TDG-Hm-YNe" name="value" keyPath="values.selectionInstanceHighlightDelay" id="4oW-cM-f3e"/>
</connections>
</textField>
</subviews>
<constraints>
<constraint firstItem="J5U-m9-FvG" firstAttribute="baseline" secondItem="6o6-2H-ikQ" secondAttribute="baseline" id="0AE-sg-GQ9"/>
<constraint firstAttribute="trailing" secondItem="6Dj-HL-UJe" secondAttribute="trailing" priority="750" constant="20" symbolic="YES" id="2VH-se-fCQ"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="0K5-c2-5an" secondAttribute="trailing" constant="20" symbolic="YES" id="2jF-O6-Agg"/>
<constraint firstItem="8I5-Lh-Ofn" firstAttribute="trailing" secondItem="e7o-7Q-Iec" secondAttribute="trailing" id="4IC-e3-jpK"/>
<constraint firstItem="Lkx-K3-8V4" firstAttribute="leading" secondItem="nCa-bl-21K" secondAttribute="trailing" constant="8" symbolic="YES" id="4mK-3u-hgv"/>
<constraint firstItem="iCa-WZ-H0K" firstAttribute="leading" secondItem="UIG-Pu-GIH" secondAttribute="trailing" constant="4" id="5Ux-aN-To5"/>
<constraint firstItem="LUh-bR-BEp" firstAttribute="leading" secondItem="PCw-Sh-dDO" secondAttribute="trailing" constant="8" symbolic="YES" id="5ms-OO-cJY"/>
<constraint firstItem="DcX-sg-7bi" firstAttribute="leading" secondItem="VFE-8n-7LR" secondAttribute="trailing" constant="4" id="6fc-uy-oqF"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Lkx-K3-8V4" secondAttribute="trailing" constant="20" symbolic="YES" id="70L-3K-oAe"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="55Y-oF-UTC" secondAttribute="trailing" constant="20" symbolic="YES" id="7nl-xD-BZi"/>
<constraint firstItem="wCX-eB-XQx" firstAttribute="top" secondItem="gY2-yd-rUU" secondAttribute="bottom" constant="6" symbolic="YES" id="8It-2l-UN4"/>
<constraint firstItem="q35-Kk-wlB" firstAttribute="leading" secondItem="PCw-Sh-dDO" secondAttribute="trailing" constant="8" symbolic="YES" id="8TM-bf-jTS"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Xio-Kn-lnJ" secondAttribute="trailing" constant="20" symbolic="YES" id="8fs-rj-0EE"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="gY2-yd-rUU" secondAttribute="trailing" constant="20" symbolic="YES" id="8pq-vu-Qfs"/>
<constraint firstItem="X2i-kL-uLT" firstAttribute="top" secondItem="Xio-Kn-lnJ" secondAttribute="bottom" constant="12" id="9UA-PB-IzX"/>
<constraint firstItem="PCw-Sh-dDO" firstAttribute="leading" secondItem="3oL-k6-e6i" secondAttribute="leading" priority="750" constant="20" symbolic="YES" id="9eP-y0-Knl"/>
<constraint firstItem="aNs-iL-jLx" firstAttribute="top" secondItem="0K5-c2-5an" secondAttribute="bottom" constant="6" symbolic="YES" id="9k4-b8-LOO"/>
<constraint firstItem="v22-99-ozp" firstAttribute="leading" secondItem="nCa-bl-21K" secondAttribute="trailing" constant="8" symbolic="YES" id="Abr-JV-BMQ"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="nqq-MP-8Cp" secondAttribute="trailing" constant="20" symbolic="YES" id="Ahn-zf-7v3"/>
<constraint firstItem="UIG-Pu-GIH" firstAttribute="baseline" secondItem="6oL-oP-LwE" secondAttribute="baseline" id="AoH-Ny-nnp"/>
<constraint firstItem="XNI-eS-U8G" firstAttribute="leading" secondItem="WL7-y8-umX" secondAttribute="leading" constant="-20" id="BHv-kc-R85"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="wCX-eB-XQx" secondAttribute="trailing" constant="20" symbolic="YES" id="CJ6-WB-cz4"/>
<constraint firstItem="fUU-DY-nnn" firstAttribute="leading" secondItem="vfb-GS-2rH" secondAttribute="trailing" constant="8" symbolic="YES" id="DOY-nf-KG9"/>
<constraint firstItem="nCa-bl-21K" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3oL-k6-e6i" secondAttribute="leading" constant="20" symbolic="YES" id="E9o-Re-jst"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="v22-99-ozp" secondAttribute="trailing" constant="20" symbolic="YES" id="EMb-da-9wJ"/>
<constraint firstItem="a9Q-Qg-ppv" firstAttribute="top" secondItem="nqq-MP-8Cp" secondAttribute="bottom" constant="6" symbolic="YES" id="Ebn-Qw-WkG"/>
<constraint firstItem="6Dj-HL-UJe" firstAttribute="leading" secondItem="e7o-7Q-Iec" secondAttribute="trailing" constant="8" symbolic="YES" id="F3f-hf-7xA"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LUh-bR-BEp" secondAttribute="trailing" constant="20" symbolic="YES" id="FkI-Pt-Khc"/>
<constraint firstItem="6o6-2H-ikQ" firstAttribute="leading" secondItem="PCw-Sh-dDO" secondAttribute="trailing" constant="8" symbolic="YES" id="Foh-0F-8Em"/>
<constraint firstItem="a9Q-Qg-ppv" firstAttribute="leading" secondItem="e7o-7Q-Iec" secondAttribute="trailing" constant="8" symbolic="YES" id="GMg-jE-BqN"/>
<constraint firstItem="ssD-a8-sSm" firstAttribute="top" secondItem="v22-99-ozp" secondAttribute="bottom" constant="6" symbolic="YES" id="HGh-KP-aqP"/>
<constraint firstItem="Eul-Sk-7ow" firstAttribute="top" secondItem="6Dj-HL-UJe" secondAttribute="bottom" constant="6" symbolic="YES" id="Hcw-VT-kf8"/>
<constraint firstItem="Lkx-K3-8V4" firstAttribute="baseline" secondItem="nCa-bl-21K" secondAttribute="baseline" id="Jeg-gF-MNS"/>
<constraint firstItem="nqq-MP-8Cp" firstAttribute="leading" secondItem="e7o-7Q-Iec" secondAttribute="trailing" constant="8" symbolic="YES" id="KNG-aH-ydW"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Eul-Sk-7ow" secondAttribute="trailing" constant="20" symbolic="YES" id="KXg-u7-QgS"/>
<constraint firstItem="DhT-LT-Lve" firstAttribute="baseline" secondItem="6o6-2H-ikQ" secondAttribute="baseline" id="KcB-dZ-guR"/>
<constraint firstItem="J5U-m9-FvG" firstAttribute="centerY" secondItem="fr0-Ug-Vp1" secondAttribute="centerY" id="KmB-O7-veE"/>
<constraint firstItem="8WW-uf-bLm" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3oL-k6-e6i" secondAttribute="leading" constant="20" symbolic="YES" id="L8J-Nz-O8F"/>
<constraint firstItem="55Y-oF-UTC" firstAttribute="leading" secondItem="gY2-yd-rUU" secondAttribute="leading" id="Lcb-gl-rfl"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="aNs-iL-jLx" secondAttribute="trailing" constant="20" symbolic="YES" id="ME9-9R-VMJ"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="N1n-gE-ApS" secondAttribute="trailing" constant="20" symbolic="YES" id="NHW-Ng-xxf"/>
<constraint firstItem="DNu-ZN-Zyx" firstAttribute="leading" secondItem="iCa-WZ-H0K" secondAttribute="trailing" constant="6" id="NRl-6R-EkF"/>
<constraint firstItem="DcX-sg-7bi" firstAttribute="firstBaseline" secondItem="VFE-8n-7LR" secondAttribute="firstBaseline" id="OR9-dy-qSc"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ssD-a8-sSm" secondAttribute="trailing" constant="20" symbolic="YES" id="PY6-c0-dYu"/>
<constraint firstItem="XNI-eS-U8G" firstAttribute="leading" secondItem="8I5-Lh-Ofn" secondAttribute="trailing" constant="8" symbolic="YES" id="R0H-Ge-4Nv"/>
<constraint firstItem="Eul-Sk-7ow" firstAttribute="leading" secondItem="e7o-7Q-Iec" secondAttribute="trailing" constant="8" symbolic="YES" id="RTF-EK-rGB"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="q35-Kk-wlB" secondAttribute="trailing" constant="20" symbolic="YES" id="Rcn-h5-DQM"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="WL7-y8-umX" secondAttribute="trailing" constant="20" symbolic="YES" id="SZj-sQ-Ar3"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="XNI-eS-U8G" secondAttribute="trailing" constant="20" symbolic="YES" id="TcT-bX-yuA"/>
<constraint firstItem="Jwj-BA-jAE" firstAttribute="top" secondItem="LUh-bR-BEp" secondAttribute="bottom" constant="6" symbolic="YES" id="UmQ-g9-rhZ"/>
<constraint firstItem="v22-99-ozp" firstAttribute="top" secondItem="Lkx-K3-8V4" secondAttribute="bottom" constant="6" symbolic="YES" id="VDj-mH-3BE"/>
<constraint firstItem="PCw-Sh-dDO" firstAttribute="top" secondItem="3oL-k6-e6i" secondAttribute="top" constant="20" symbolic="YES" id="VSz-Yu-Dqo"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="fUU-DY-nnn" secondAttribute="trailing" constant="20" symbolic="YES" id="Vfy-Ud-iaM"/>
<constraint firstItem="J5U-m9-FvG" firstAttribute="leading" secondItem="6o6-2H-ikQ" secondAttribute="trailing" constant="8" symbolic="YES" id="XGA-ab-wP3"/>
<constraint firstItem="fr0-Ug-Vp1" firstAttribute="leading" secondItem="J5U-m9-FvG" secondAttribute="trailing" constant="4" id="Y2P-6r-WM5"/>
<constraint firstItem="nCa-bl-21K" firstAttribute="trailing" secondItem="PCw-Sh-dDO" secondAttribute="trailing" id="Y3k-Z7-J6G"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="DcX-sg-7bi" secondAttribute="trailing" id="YFg-Ey-yOs"/>
<constraint firstItem="8WW-uf-bLm" firstAttribute="trailing" secondItem="e7o-7Q-Iec" secondAttribute="trailing" id="ZVC-nc-O0B"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="X2i-kL-uLT" secondAttribute="trailing" constant="20" symbolic="YES" id="ZdY-Ig-nAn"/>
<constraint firstItem="fUU-DY-nnn" firstAttribute="firstBaseline" secondItem="PCw-Sh-dDO" secondAttribute="firstBaseline" id="aoc-ER-uBA"/>
<constraint firstItem="DcX-sg-7bi" firstAttribute="top" secondItem="wCX-eB-XQx" secondAttribute="bottom" constant="8" symbolic="YES" id="b2c-in-XTt"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Jwj-BA-jAE" secondAttribute="trailing" constant="20" symbolic="YES" id="b4C-2O-v9y"/>
<constraint firstItem="6Dj-HL-UJe" firstAttribute="top" secondItem="a9Q-Qg-ppv" secondAttribute="bottom" constant="6" symbolic="YES" id="bK3-is-kNJ"/>
<constraint firstItem="Xio-Kn-lnJ" firstAttribute="top" secondItem="Eul-Sk-7ow" secondAttribute="bottom" constant="6" symbolic="YES" id="cOd-TH-OSf"/>
<constraint firstItem="iCa-WZ-H0K" firstAttribute="centerY" secondItem="UIG-Pu-GIH" secondAttribute="centerY" id="clW-qG-jHA"/>
<constraint firstItem="PCw-Sh-dDO" firstAttribute="trailing" secondItem="e7o-7Q-Iec" secondAttribute="trailing" id="dOc-DG-5ot"/>
<constraint firstItem="DhT-LT-Lve" firstAttribute="leading" secondItem="fr0-Ug-Vp1" secondAttribute="trailing" constant="6" id="dvl-sc-Fv2"/>
<constraint firstAttribute="bottom" secondItem="DcX-sg-7bi" secondAttribute="bottom" constant="20" symbolic="YES" id="eE5-HS-TFD"/>
<constraint firstItem="DNu-ZN-Zyx" firstAttribute="baseline" secondItem="6oL-oP-LwE" secondAttribute="baseline" id="eK7-CE-czY"/>
<constraint firstItem="Lkx-K3-8V4" firstAttribute="top" secondItem="X2i-kL-uLT" secondAttribute="bottom" constant="12" id="ezO-fQ-zwH"/>
<constraint firstItem="vfb-GS-2rH" firstAttribute="leading" secondItem="PCw-Sh-dDO" secondAttribute="trailing" constant="8" symbolic="YES" id="fSg-dD-Z2o"/>
<constraint firstItem="q35-Kk-wlB" firstAttribute="top" secondItem="Jwj-BA-jAE" secondAttribute="bottom" constant="6" symbolic="YES" id="fuF-Im-He0"/>
<constraint firstItem="e7o-7Q-Iec" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3oL-k6-e6i" secondAttribute="leading" constant="20" symbolic="YES" id="g7H-hx-xyn"/>
<constraint firstItem="6oL-oP-LwE" firstAttribute="leading" secondItem="aNs-iL-jLx" secondAttribute="leading" constant="20" id="g8O-g5-INE"/>
<constraint firstItem="ssD-a8-sSm" firstAttribute="leading" secondItem="0K5-c2-5an" secondAttribute="leading" constant="-20" id="gLi-3G-aO2"/>
<constraint firstItem="Jwj-BA-jAE" firstAttribute="leading" secondItem="PCw-Sh-dDO" secondAttribute="trailing" constant="8" symbolic="YES" id="gT3-fa-th8"/>
<constraint firstItem="X2i-kL-uLT" firstAttribute="leading" secondItem="8WW-uf-bLm" secondAttribute="trailing" constant="8" symbolic="YES" id="gTD-U8-dse"/>
<constraint firstItem="N1n-gE-ApS" firstAttribute="leading" secondItem="a9Q-Qg-ppv" secondAttribute="trailing" constant="8" symbolic="YES" id="giZ-W2-K6d"/>
<constraint firstItem="55Y-oF-UTC" firstAttribute="leading" secondItem="WL7-y8-umX" secondAttribute="leading" id="hym-mT-vSY"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="DNu-ZN-Zyx" secondAttribute="trailing" constant="20" symbolic="YES" id="iLJ-qb-01T"/>
<constraint firstItem="6oL-oP-LwE" firstAttribute="top" secondItem="aNs-iL-jLx" secondAttribute="bottom" constant="8" symbolic="YES" id="j9e-dS-bjB"/>
<constraint firstItem="6o6-2H-ikQ" firstAttribute="top" secondItem="vfb-GS-2rH" secondAttribute="bottom" constant="8" symbolic="YES" id="koZ-FJ-v9V"/>
<constraint firstItem="8I5-Lh-Ofn" firstAttribute="baseline" secondItem="XNI-eS-U8G" secondAttribute="baseline" id="lAn-dw-oZx"/>
<constraint firstItem="8I5-Lh-Ofn" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="3oL-k6-e6i" secondAttribute="leading" constant="20" symbolic="YES" id="mJk-W9-B6M"/>
<constraint firstItem="gY2-yd-rUU" firstAttribute="top" secondItem="55Y-oF-UTC" secondAttribute="bottom" constant="6" symbolic="YES" id="mZe-vW-vrS"/>
<constraint firstItem="XNI-eS-U8G" firstAttribute="top" secondItem="UIG-Pu-GIH" secondAttribute="bottom" constant="12" id="myX-sf-5iF"/>
<constraint firstItem="vfb-GS-2rH" firstAttribute="firstBaseline" secondItem="PCw-Sh-dDO" secondAttribute="firstBaseline" id="nnB-pV-bdM"/>
<constraint firstItem="e7o-7Q-Iec" firstAttribute="baseline" secondItem="nqq-MP-8Cp" secondAttribute="baseline" id="nt4-ss-o68"/>
<constraint firstItem="Xio-Kn-lnJ" firstAttribute="leading" secondItem="Eul-Sk-7ow" secondAttribute="leading" constant="20" id="opv-E7-tiZ"/>
<constraint firstItem="WL7-y8-umX" firstAttribute="top" secondItem="XNI-eS-U8G" secondAttribute="bottom" constant="8" symbolic="YES" id="pxo-Vk-QIn"/>
<constraint firstItem="N1n-gE-ApS" firstAttribute="bottom" secondItem="a9Q-Qg-ppv" secondAttribute="bottom" id="rQH-DV-VBl"/>
<constraint firstItem="LUh-bR-BEp" firstAttribute="top" secondItem="6o6-2H-ikQ" secondAttribute="bottom" constant="8" symbolic="YES" id="s5J-5j-YeL"/>
<constraint firstItem="aNs-iL-jLx" firstAttribute="leading" secondItem="nCa-bl-21K" secondAttribute="trailing" constant="8" symbolic="YES" id="s9e-tA-QMM"/>
<constraint firstItem="0K5-c2-5an" firstAttribute="top" secondItem="ssD-a8-sSm" secondAttribute="bottom" constant="6" symbolic="YES" id="uKo-Wq-emg"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="DhT-LT-Lve" secondAttribute="trailing" constant="20" symbolic="YES" id="uwM-RZ-gkp"/>
<constraint firstItem="ssD-a8-sSm" firstAttribute="leading" secondItem="nCa-bl-21K" secondAttribute="trailing" constant="8" symbolic="YES" id="vCL-em-ty9"/>
<constraint firstItem="UIG-Pu-GIH" firstAttribute="leading" secondItem="6oL-oP-LwE" secondAttribute="trailing" constant="4" id="vfG-uW-gIh"/>
<constraint firstItem="VFE-8n-7LR" firstAttribute="leading" secondItem="XNI-eS-U8G" secondAttribute="leading" id="wqq-0L-1nx"/>
<constraint firstItem="nqq-MP-8Cp" firstAttribute="top" secondItem="q35-Kk-wlB" secondAttribute="bottom" constant="12" id="yKP-xm-PgE"/>
<constraint firstItem="55Y-oF-UTC" firstAttribute="top" secondItem="WL7-y8-umX" secondAttribute="bottom" constant="6" symbolic="YES" id="ydE-1s-uu0"/>
<constraint firstItem="wCX-eB-XQx" firstAttribute="leading" secondItem="8I5-Lh-Ofn" secondAttribute="trailing" constant="8" symbolic="YES" id="ylN-hv-IyC"/>
<constraint firstItem="8WW-uf-bLm" firstAttribute="baseline" secondItem="X2i-kL-uLT" secondAttribute="baseline" id="zAQ-rz-8hO"/>
</constraints>
</customView>
<button identifier="settings_edit" horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ks6-yt-k9q">
<rect key="frame" x="557" y="16" width="25" height="25"/>
<buttonCell key="cell" type="help" bezelStyle="helpButton" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2Rz-Ie-QiJ">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="openHelpAnchor:" target="F6O-dU-PkM" id="OaT-eu-1UD"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="3oL-k6-e6i" firstAttribute="top" secondItem="4sX-tH-txQ" secondAttribute="top" id="50k-L0-HPX"/>
<constraint firstAttribute="trailing" secondItem="Ks6-yt-k9q" secondAttribute="trailing" constant="20" symbolic="YES" id="Egf-nj-hbA"/>
<constraint firstItem="Ks6-yt-k9q" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="DcX-sg-7bi" secondAttribute="trailing" constant="10" id="Id5-lU-VMV"/>
<constraint firstAttribute="bottom" secondItem="Ks6-yt-k9q" secondAttribute="bottom" constant="20" symbolic="YES" id="KCu-p6-Obd"/>
<constraint firstItem="Ks6-yt-k9q" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4sX-tH-txQ" secondAttribute="leading" constant="20" symbolic="YES" id="M76-rT-kee"/>
<constraint firstItem="3oL-k6-e6i" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="4sX-tH-txQ" secondAttribute="leading" id="VUb-V6-Dqm"/>
<constraint firstAttribute="bottom" secondItem="3oL-k6-e6i" secondAttribute="bottom" id="brG-xg-V6e"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="3oL-k6-e6i" secondAttribute="trailing" id="fBA-ef-dp4"/>
<constraint firstItem="3oL-k6-e6i" firstAttribute="centerX" secondItem="4sX-tH-txQ" secondAttribute="centerX" id="nco-dZ-BBa"/>
</constraints>
</view>
<connections>
<outlet property="selectionInstanceHighlightDelayField" destination="UIG-Pu-GIH" id="cuD-AG-Ars"/>
<outlet property="tabWidthField" destination="J5U-m9-FvG" id="2sl-rV-QID"/>
</connections>
</viewController>
<customObject id="F6O-dU-PkM" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
<userDefaultsController representsSharedInstance="YES" id="TDG-Hm-YNe" userLabel="Shared User Defaults Controller"/>
</objects>
<point key="canvasLocation" x="0.0" y="0.0"/>
</scene>
</scenes>
<resources>
<image name="exclamationmark.triangle.fill" catalog="system" width="17" height="15"/>
</resources>
</document>

View File

@ -1,72 +0,0 @@
//
// EditPaneController.swift
//
// CotEditor
// https://coteditor.com
//
// Created by 1024jp on 2014-04-18.
//
// ---------------------------------------------------------------------------
//
// © 2004-2007 nakamuxu
// © 2014-2022 1024jp
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import AppKit
final class EditPaneController: NSViewController {
// MARK: Private Properties
@objc private dynamic lazy var isValidCompletion: Bool = self.validateCompletionSetting()
@IBOutlet private weak var tabWidthField: NSTextField?
@IBOutlet private weak var selectionInstanceHighlightDelayField: NSTextField?
// MARK: Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
// set initial values as fields' placeholder
self.tabWidthField?.bindNullPlaceholderToUserDefaults()
self.selectionInstanceHighlightDelayField?.bindNullPlaceholderToUserDefaults()
}
// MARK: Action Messages
/// The condition of the completion list was changed.
@IBAction func updateCompletionListWords(_ sender: Any?) {
self.isValidCompletion = self.validateCompletionSetting()
}
// MARK: Private Methods
/// Updates the hint for word completion.
private func validateCompletionSetting() -> Bool {
(UserDefaults.standard[.completesDocumentWords] ||
UserDefaults.standard[.completesSyntaxWords] ||
UserDefaults.standard[.completesStandardWords])
}
}

View File

@ -0,0 +1,182 @@
//
// EditSettingsView.swift
//
// CotEditor
// https://coteditor.com
//
// Created by 1024jp on 2023-11-29.
//
// ---------------------------------------------------------------------------
//
// © 2023-2024 1024jp
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import SwiftUI
struct EditSettingsView: View {
@AppStorage(.autoExpandTab) private var autoExpandTab
@AppStorage(.tabWidth) private var tabWidth
@AppStorage(.detectsIndentStyle) private var detectsIndentStyle
@AppStorage(.autoIndent) private var autoIndent
@AppStorage(.indentWithTabKey) private var indentWithTabKey
@AppStorage(.smartInsertAndDelete) private var smartInsertAndDelete
@AppStorage(.enableSmartQuotes) private var enableSmartQuotes
@AppStorage(.enableSmartDashes) private var enableSmartDashes
@AppStorage(.balancesBrackets) private var balancesBrackets
@AppStorage(.autoTrimsTrailingWhitespace) private var autoTrimsTrailingWhitespace
@AppStorage(.trimsWhitespaceOnlyLines) private var trimsWhitespaceOnlyLines
@AppStorage(.appendsCommentSpacer) private var appendsCommentSpacer
@AppStorage(.autoLinkDetection) private var autoLinkDetection
@AppStorage(.checkSpellingAsType) private var checkSpellingAsType
@AppStorage(.highlightBraces) private var highlightBraces
@AppStorage(.highlightLtGt) private var highlightLtGt
@AppStorage(.highlightSelectionInstance) private var highlightSelectionInstance
@AppStorage(.selectionInstanceHighlightDelay) private var selectionInstanceHighlightDelay
@AppStorage(.completesDocumentWords) private var completesDocumentWords
@AppStorage(.completesSyntaxWords) private var completesSyntaxWords
@AppStorage(.completesStandardWords) private var completesStandardWords
@AppStorage(.autoComplete) private var autoComplete
var body: some View {
Grid(alignment: .leadingFirstTextBaseline, verticalSpacing: 12) {
GridRow {
Text("Indentation:", tableName: "EditSettings")
.gridColumnAlignment(.trailing)
VStack(alignment: .leading, spacing: 6) {
Picker(String(localized: "Prefer using", table: "EditSettings"), selection: $autoExpandTab) {
Text("Spaces", tableName: "EditSettings", comment: "indent style").tag(true)
Text("Tabs", tableName: "EditSettings", comment: "indent style").tag(false)
}.fixedSize()
HStack(alignment: .firstTextBaseline) {
Text("Indent width:", tableName: "EditSettings")
StepperNumberField(value: $tabWidth, default: UserDefaults.standard[initial: .tabWidth], in: 1...99)
Text("spaces", tableName: "EditSettings", comment: "unit for indentation")
}
Toggle(String(localized: "Detect indent style on document opening", table: "EditSettings"), isOn: $detectsIndentStyle)
Toggle(String(localized: "Automatically indent while typing", table: "EditSettings"), isOn: $autoIndent)
Toggle(String(localized: "Indent selection with Tab key", table: "EditSettings"), isOn: $indentWithTabKey)
}
}
GridRow {
Text("Substitution:", tableName: "EditSettings")
.gridColumnAlignment(.trailing)
VStack(alignment: .leading, spacing: 6) {
Toggle(String(localized: "Smart copy/paste", table: "EditSettings"), isOn: $smartInsertAndDelete)
HStack(alignment: .firstTextBaseline) {
Toggle(String(localized: "Smart quotes", table: "EditSettings"), isOn: $enableSmartQuotes)
Toggle(String(localized: "Smart dashes", table: "EditSettings"), isOn: $enableSmartDashes)
}
Toggle(String(localized: "Automatically insert closing brackets and quotes", table: "EditSettings"), isOn: $balancesBrackets)
Toggle(String(localized: "Automatically trim trailing whitespace", table: "EditSettings"), isOn: $autoTrimsTrailingWhitespace)
Toggle(String(localized: "Including whitespace-only lines", table: "EditSettings"), isOn: $trimsWhitespaceOnlyLines)
.disabled(!self.autoTrimsTrailingWhitespace)
.padding(.leading, 20)
}
}
GridRow {
Text("Comment:", tableName: "EditSettings")
.gridColumnAlignment(.trailing)
VStack(alignment: .leading, spacing: 6) {
Toggle(String(localized: "Append a space to comment delimiter", table: "EditSettings"), isOn: $appendsCommentSpacer)
}
}
GridRow {
Text("Content parse:", tableName: "EditSettings")
.gridColumnAlignment(.trailing)
VStack(alignment: .leading, spacing: 6) {
Toggle(String(localized: "Link URLs in document", table: "EditSettings"), isOn: $autoLinkDetection)
Toggle(String(localized: "Check spelling while typing", table: "EditSettings"), isOn: $checkSpellingAsType)
Toggle(String(localized: "Highlight matching braces “()” “[]” “{}”", table: "EditSettings"), isOn: $highlightBraces)
Toggle(String(localized: "Highlight “<>”", table: "EditSettings"), isOn: $highlightLtGt)
.disabled(!self.highlightBraces)
.padding(.leading, 20)
Toggle(String(localized: "Highlight instances of selected text", table: "EditSettings"), isOn: $highlightSelectionInstance)
HStack(alignment: .firstTextBaseline) {
Text("Delay:", tableName: "EditSettings")
Stepper(value: $selectionInstanceHighlightDelay, in: 0...10, step: 0.25, format: .number.precision(.fractionLength(2)), label: EmptyView.init)
.monospacedDigit()
.multilineTextAlignment(.trailing) // width: 40
Text("seconds", tableName: "EditSettings", comment: "init for delay time")
}
.disabled(!self.highlightSelectionInstance)
.foregroundStyle(self.highlightSelectionInstance ? .primary : .tertiary)
.controlSize(.small)
.padding(.leading, 20)
}
}
GridRow {
Text("Completion:", tableName: "EditSettings")
.gridColumnAlignment(.trailing)
VStack(alignment: .leading, spacing: 6) {
Text("Completion list includes:", tableName: "EditSettings")
Group {
Toggle(String(localized: "Words in document", table: "EditSettings"), isOn: $completesDocumentWords)
Toggle(String(localized: "Words defined in syntax", table: "EditSettings"), isOn: $completesSyntaxWords)
Toggle(String(localized: "Standard words", table: "EditSettings"), isOn: $completesStandardWords)
}.padding(.leading, 20)
Toggle(String(localized: "Suggest completions while typing", table: "EditSettings"), isOn: $autoComplete)
Label(String(localized: "Select at least one item to enable completion.", table: "EditSettings"), systemImage: "exclamationmark.triangle")
.fixedSize(horizontal: false, vertical: true)
.symbolVariant(.fill)
.symbolRenderingMode(.multicolor)
.foregroundStyle(.secondary)
.controlSize(.small)
.opacity(self.isValidCompletion ? 0 : 1)
.padding(.trailing, 30) // for Help button
}
}
HStack {
Spacer()
HelpButton(anchor: "settings_edit")
}.padding(.top, -30)
}
.scenePadding()
.frame(minWidth: 600)
}
private var isValidCompletion: Bool {
self.completesDocumentWords || self.completesSyntaxWords || self.completesStandardWords
}
}
// MARK: - Preview
#Preview {
EditSettingsView()
}

View File

@ -102,7 +102,7 @@ private extension SettingsPane {
case .general: .storyboard("GeneralPane")
case .appearance: .storyboard("AppearancePane")
case .window: .storyboard("WindowPane")
case .edit: .storyboard("EditPane")
case .edit: .swiftUI(AnyView(EditSettingsView()))
case .format: .storyboard("FormatPane")
case .snippets: .storyboard("SnippetsPane")
case .keyBindings: .storyboard("KeyBindingsPane")