Merge branch 'main' into 4.9.0

This commit is contained in:
1024jp 2024-06-13 23:10:21 +09:00
commit 086ac76217
4 changed files with 25 additions and 10 deletions

View File

@ -37,12 +37,14 @@
### Implements
- Update the Markdown syntax to fix highlighting strikethrough.
- Improve the User Guide contents.
- [non-AppStore ver.] Update Sparkle from 2.6.2 to 2.6.3.
### Fixes
- Fix an issue that a saved document could not revert to the horizontal text orientation when it was saved once as a vertical text document.
- Fix a trivial memory leak in the line ending menu (thanks to Yoshimasa Niwa).

View File

@ -463,6 +463,11 @@ import FilePermissions
try super.writeSafely(to: url, ofType: typeName, for: saveOperation)
if saveOperation != .autosaveElsewhereOperation {
// set/remove flag for vertical text orientation
if UserDefaults.standard[.savesTextOrientation] {
try? url.setExtendedAttribute(data: self.isVerticalText ? Data([1]) : nil, for: FileExtendedAttributeName.verticalText)
}
// get the latest file attributes
do {
let attributes = try FileManager.default.attributesOfItem(atPath: url.path) // FILE_ACCESS
@ -491,6 +496,8 @@ import FilePermissions
}
// save document state to the extended file attributes
// -> Save FileExtendedAttributeName.verticalText at `super.writeSafely(to:ofType:for:)`
// since the xattr already set to the file cannot remove at this point. (2024-06-12)
var xattrs: [String: Data] = [:]
if self.shouldSaveEncodingXattr {
xattrs[FileExtendedAttributeName.encoding] = self.fileEncoding.encoding.xattrEncodingData
@ -498,9 +505,6 @@ import FilePermissions
if self.suppressesInconsistentLineEndingAlert {
xattrs[FileExtendedAttributeName.allowLineEndingInconsistency] = Data([1])
}
if UserDefaults.standard[.savesTextOrientation] {
xattrs[FileExtendedAttributeName.verticalText] = self.isVerticalText ? Data([1]) : nil
}
if !xattrs.isEmpty {
attributes[FileAttributeKey.extendedAttributes.rawValue] = xattrs
}

View File

@ -8,7 +8,7 @@
//
// ---------------------------------------------------------------------------
//
// © 2018-2023 1024jp
// © 2018-2024 1024jp
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -27,7 +27,10 @@ import Foundation
extension URL {
/// Gets extended attribute
/// Gets extended attribute.
///
/// - Parameter name: The key name of the attribute to get.
/// - Returns: Data.
func extendedAttribute(for name: String) throws -> Data {
try self.withUnsafeFileSystemRepresentation { fileSystemPath -> Data in
@ -49,7 +52,11 @@ extension URL {
}
/// Sets extended attribute
/// Sets extended attribute.
///
/// - Parameters:
/// - data: The data to set.
/// - name: The attribute key name to set.
func setExtendedAttribute(data: Data?, for name: String) throws {
// remove if nil is passed
@ -67,7 +74,9 @@ extension URL {
}
/// Removes extended attribute
/// Removes extended attribute.
///
/// - Parameter name: The attribute key name to remove.
private func removeExtendedAttribute(for name: String) throws {
try self.withUnsafeFileSystemRepresentation { fileSystemPath in

View File

@ -39,7 +39,7 @@ extensions:
filenames: []
interpreters: []
keywords:
- beginString: (?<!\\)\b~~(?![ \t])((?!\R{2})(?:.|\R))*?(?<![\\\t ])~~
- beginString: (?<!\\)~~[^ \t~]((?!\R{2})(?:.|\R))*?(?<![\\ ])~~
description: '[github] strikethrough'
regularExpression: true
- beginString: \R[\t ]*\R(?:\- *){3,}$
@ -71,9 +71,9 @@ kind: general
metadata:
author: 1024jp
distributionURL: https://coteditor.com
lastModified: '2024-05-10'
lastModified: '2024-06-09'
license: Same as CotEditor
version: 1.4.0
version: 1.4.1
numbers:
- beginString: (?<!\\)!\[.*?(?<!\\)\](?=\()
description: img