use note title as default Save As filename
This commit is contained in:
parent
358e30f613
commit
5ebf308104
|
|
@ -186,13 +186,26 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
@objc private func saveNoteAs() {
|
@objc private func saveNoteAs() {
|
||||||
let panel = NSSavePanel()
|
let panel = NSSavePanel()
|
||||||
panel.allowedContentTypes = [UTType(filenameExtension: "md")!]
|
panel.allowedContentTypes = [UTType(filenameExtension: "md")!]
|
||||||
panel.nameFieldStringValue = "note.md"
|
panel.nameFieldStringValue = defaultFilename()
|
||||||
panel.beginSheetModal(for: window) { [weak self] response in
|
panel.beginSheetModal(for: window) { [weak self] response in
|
||||||
guard response == .OK, let url = panel.url else { return }
|
guard response == .OK, let url = panel.url else { return }
|
||||||
self?.appState.saveNoteToFile(url)
|
self?.appState.saveNoteToFile(url)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func defaultFilename() -> String {
|
||||||
|
let firstLine = appState.documentText
|
||||||
|
.components(separatedBy: "\n").first?
|
||||||
|
.trimmingCharacters(in: .whitespaces) ?? ""
|
||||||
|
let stripped = firstLine.replacingOccurrences(
|
||||||
|
of: "^#+\\s*", with: "", options: .regularExpression
|
||||||
|
)
|
||||||
|
let trimmed = stripped.trimmingCharacters(in: .whitespaces)
|
||||||
|
guard !trimmed.isEmpty, trimmed != "Untitled" else { return "note.md" }
|
||||||
|
let sanitized = trimmed.map { "/:\\\\".contains($0) ? "-" : String($0) }.joined()
|
||||||
|
return sanitized.prefix(80) + ".md"
|
||||||
|
}
|
||||||
|
|
||||||
@objc private func openSettings() {
|
@objc private func openSettings() {
|
||||||
SettingsWindowController.show()
|
SettingsWindowController.show()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue