From e7561e301ea0f6d09a40bbf23af1ad3ce80e2f88 Mon Sep 17 00:00:00 2001 From: Abe M Date: Sat, 29 Mar 2025 10:31:27 -0700 Subject: [PATCH 1/4] Added underscore to selection --- .../CodeEditTextView/Extensions/CharacterSet.swift | 13 +++++++++++++ .../SelectionManipulation+Horizontal.swift | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 Sources/CodeEditTextView/Extensions/CharacterSet.swift diff --git a/Sources/CodeEditTextView/Extensions/CharacterSet.swift b/Sources/CodeEditTextView/Extensions/CharacterSet.swift new file mode 100644 index 000000000..2619de199 --- /dev/null +++ b/Sources/CodeEditTextView/Extensions/CharacterSet.swift @@ -0,0 +1,13 @@ +// +// CharacterSet.swift +// CodeEditTextView +// +// Created by Abe Malla on 3/29/25. +// + +import Foundation + +extension CharacterSet { + static let codeIdentifierCharacters: CharacterSet = .alphanumerics + .union(.init(charactersIn: "_")) +} diff --git a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift index d12033377..73e40325e 100644 --- a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift +++ b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift @@ -109,10 +109,11 @@ package extension TextSelectionManager { if hasFoundValidWordChar && CharacterSet.punctuationCharacters .union(.whitespacesAndNewlines) + .subtracting(CharacterSet.codeIdentifierCharacters) .isSuperset(of: CharacterSet(charactersIn: substring)) { stop.pointee = true return - } else if CharacterSet.alphanumerics.isSuperset(of: CharacterSet(charactersIn: substring)) { + } else if CharacterSet.codeIdentifierCharacters.isSuperset(of: CharacterSet(charactersIn: substring)) { hasFoundValidWordChar = true } rangeToDelete.length += substring.count From 03d13936adc1a985980db1d8a8fc61af75ad65bd Mon Sep 17 00:00:00 2001 From: Abe M Date: Sat, 29 Mar 2025 11:01:09 -0700 Subject: [PATCH 2/4] Added underscore to selection when double clicking --- Sources/CodeEditTextView/TextView/TextView+Select.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/CodeEditTextView/TextView/TextView+Select.swift b/Sources/CodeEditTextView/TextView/TextView+Select.swift index 6ee70a264..f3da417db 100644 --- a/Sources/CodeEditTextView/TextView/TextView+Select.swift +++ b/Sources/CodeEditTextView/TextView/TextView+Select.swift @@ -37,8 +37,8 @@ extension TextView { } let charSet = CharacterSet(charactersIn: String(char)) let characterSet: CharacterSet - if CharacterSet.alphanumerics.isSuperset(of: charSet) { - characterSet = .alphanumerics + if CharacterSet.codeIdentifierCharacters.isSuperset(of: charSet) { + characterSet = .codeIdentifierCharacters } else if CharacterSet.whitespaces.isSuperset(of: charSet) { characterSet = .whitespaces } else if CharacterSet.newlines.isSuperset(of: charSet) { From b0c3c14daa81c0a3bfbff27dd936a813befe0ab2 Mon Sep 17 00:00:00 2001 From: Abe M Date: Sat, 29 Mar 2025 11:19:11 -0700 Subject: [PATCH 3/4] Added docs --- Sources/CodeEditTextView/Extensions/CharacterSet.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/CodeEditTextView/Extensions/CharacterSet.swift b/Sources/CodeEditTextView/Extensions/CharacterSet.swift index 2619de199..78694b13a 100644 --- a/Sources/CodeEditTextView/Extensions/CharacterSet.swift +++ b/Sources/CodeEditTextView/Extensions/CharacterSet.swift @@ -8,6 +8,7 @@ import Foundation extension CharacterSet { + /// Returns a character set containing the characters in common in code names static let codeIdentifierCharacters: CharacterSet = .alphanumerics .union(.init(charactersIn: "_")) } From e2f989e2bc98fbe065906ef2e09c642db091136e Mon Sep 17 00:00:00 2001 From: Abe M Date: Sat, 29 Mar 2025 12:08:24 -0700 Subject: [PATCH 4/4] Fix comment --- Sources/CodeEditTextView/Extensions/CharacterSet.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/CodeEditTextView/Extensions/CharacterSet.swift b/Sources/CodeEditTextView/Extensions/CharacterSet.swift index 78694b13a..0d59bc970 100644 --- a/Sources/CodeEditTextView/Extensions/CharacterSet.swift +++ b/Sources/CodeEditTextView/Extensions/CharacterSet.swift @@ -8,7 +8,7 @@ import Foundation extension CharacterSet { - /// Returns a character set containing the characters in common in code names + /// Returns a character set containing the characters common in code names static let codeIdentifierCharacters: CharacterSet = .alphanumerics .union(.init(charactersIn: "_")) }