From 5ebf3081042516c74a8577abb1974d10f322c523 Mon Sep 17 00:00:00 2001 From: jess Date: Mon, 6 Apr 2026 02:40:08 -0700 Subject: [PATCH] use note title as default Save As filename --- src/AppDelegate.swift | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/AppDelegate.swift b/src/AppDelegate.swift index 16f9e82..5b9f79f 100644 --- a/src/AppDelegate.swift +++ b/src/AppDelegate.swift @@ -186,13 +186,26 @@ class AppDelegate: NSObject, NSApplicationDelegate { @objc private func saveNoteAs() { let panel = NSSavePanel() panel.allowedContentTypes = [UTType(filenameExtension: "md")!] - panel.nameFieldStringValue = "note.md" + panel.nameFieldStringValue = defaultFilename() panel.beginSheetModal(for: window) { [weak self] response in guard response == .OK, let url = panel.url else { return } 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() { SettingsWindowController.show() }