Remove nonisolated(unsafe) from .setSyntax(name:initial:)

This commit is contained in:
1024jp 2024-06-25 21:31:54 +09:00
parent 2a52e859aa
commit 221e850aec
2 changed files with 15 additions and 18 deletions

View File

@ -33,6 +33,7 @@
### TODO ### TODO
- Scan line endings in background.
- Improve Assembly syntax. - Improve Assembly syntax.
- Localized strings added. - Localized strings added.

View File

@ -83,7 +83,7 @@ import FilePermissions
private nonisolated(unsafe) var suppressesInconsistentLineEndingAlert = false private nonisolated(unsafe) var suppressesInconsistentLineEndingAlert = false
private nonisolated(unsafe) var isExternalUpdateAlertShown = false private nonisolated(unsafe) var isExternalUpdateAlertShown = false
private nonisolated(unsafe) var allowsLossySaving = false private nonisolated(unsafe) var allowsLossySaving = false
private nonisolated(unsafe) var isInitialized = false private var isInitialized = false
private nonisolated(unsafe) var lastSavedData: Data? // temporal data used only within saving process private nonisolated(unsafe) var lastSavedData: Data? // temporal data used only within saving process
@ -371,20 +371,20 @@ import FilePermissions
self.suppressesInconsistentLineEndingAlert = true self.suppressesInconsistentLineEndingAlert = true
} }
self.allowsLossySaving = false
// set read values // set read values
Task { @MainActor in Task { @MainActor in
self.textStorage.replaceContent(with: string) self.textStorage.replaceContent(with: string)
self.fileEncoding = fileEncoding self.fileEncoding = fileEncoding
self.lineEnding = self.lineEndingScanner.majorLineEnding ?? self.lineEnding // keep default if no line endings are found self.lineEnding = self.lineEndingScanner.majorLineEnding ?? self.lineEnding // keep default if no line endings are found
}
// determine syntax (only on the first file open)
self.allowsLossySaving = false if !self.isInitialized {
let syntaxName = SyntaxManager.shared.settingName(documentName: url.lastPathComponent, content: string)
// determine syntax (only on the first file open) self.setSyntax(name: syntaxName ?? SyntaxName.none, isInitial: true)
if !self.isInitialized { }
let syntaxName = SyntaxManager.shared.settingName(documentName: url.lastPathComponent, content: string)
self.setSyntax(name: syntaxName ?? SyntaxName.none, isInitial: true)
} }
} }
@ -946,10 +946,10 @@ import FilePermissions
/// - Parameters: /// - Parameters:
/// - name: The name of the syntax to change with. /// - name: The name of the syntax to change with.
/// - isInitial: Whether the setting is initial. /// - isInitial: Whether the setting is initial.
nonisolated(unsafe) func setSyntax(name: String, isInitial: Bool = false) { func setSyntax(name: String, isInitial: Bool = false) {
defer { defer {
Task { await self.invalidateMode() } self.invalidateMode()
} }
let syntax: Syntax let syntax: Syntax
@ -957,9 +957,7 @@ import FilePermissions
syntax = try SyntaxManager.shared.setting(name: name) syntax = try SyntaxManager.shared.setting(name: name)
} catch { } catch {
// present error dialog if failed // present error dialog if failed
Task { @MainActor [error] in self.presentErrorAsSheet(error)
self.presentErrorAsSheet(error)
}
return return
} }
@ -972,10 +970,8 @@ import FilePermissions
// to avoid redundant highlight parse due to async notification. // to avoid redundant highlight parse due to async notification.
guard !isInitial else { return } guard !isInitial else { return }
Task { @MainActor in self.didChangeSyntax.send(name)
self.didChangeSyntax.send(name) self.invalidateRestorableState()
self.invalidateRestorableState()
}
} }