aboutsummaryrefslogtreecommitdiffstats
path: root/src/notmuchworker.h
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-25 09:13:21 +0200
committerDanilo M. <danix@danix.xyz>2026-08-25 09:13:21 +0200
commit3e196bbaf6a5f3ebf6597e0ada1f559d24627ca6 (patch)
tree5d76949bf34ab581826f0f699d60e0fc45b3e175 /src/notmuchworker.h
parentf8d136432466479c892841bc73bd85e58674da86 (diff)
parent0a26961f9a7ae6ab98051e182b92e64165758cf1 (diff)
downloadqtmaildir-3e196bbaf6a5f3ebf6597e0ada1f559d24627ca6.tar.gz
qtmaildir-3e196bbaf6a5f3ebf6597e0ada1f559d24627ca6.zip
Merge branch 'signatures'
Signatures (item 152): one markdown file per signature under ~/.config/qtmaildir/signatures/, spliced into the composer buffer and chosen from a switch on the editor bar. [compose] signature seeds a new message, [account.<key>] signature overrides per account, and [compose] signature_position picks end or above_quote. Also carries three fixes found by hand-testing it: a saved draft is indexed so it appears without a sync (item 158), the Drafts filter lists messages rather than threads so a draft reply can be opened (item 159), and a resumed draft no longer re-seeds its signature on a From: change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UUQS6n3cmsFrsjCNmwNtf8
Diffstat (limited to 'src/notmuchworker.h')
-rw-r--r--src/notmuchworker.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/notmuchworker.h b/src/notmuchworker.h
index 8ed878f..3ccf8e5 100644
--- a/src/notmuchworker.h
+++ b/src/notmuchworker.h
@@ -134,6 +134,28 @@ public slots:
/// it, so removing before indexing loses the message's tags.
void moveMessages(const QStringList &messageIds, const QString &destFolder);
+ /// Indexes one freshly written file, so it appears in a `path:` query
+ /// without a full `notmuch new` (item 158).
+ ///
+ /// The draft-save path writes the file and stops, and the Drafts view is a
+ /// path query, so an unindexed draft is invisible until the next sync. A
+ /// draft rewrite writes a NEW file (MessageBuilder generates a fresh
+ /// Message-ID on every build) and unlinks the old, so \p previousPath is
+ /// removed after the new one is indexed, mirroring moveMessages()'s
+ /// ordering: the old entry must not linger as a ghost draft.
+ ///
+ /// \p path is absolute, as DraftStore::write() returns it. The Maildir
+ /// flags on the file (the "D" flag a draft carries) drive its tags exactly
+ /// as they would on a later `notmuch new`.
+ void indexDraftFile(const QString &path, const QString &previousPath = {});
+
+ /// Removes one file from the index, without touching the file on disk.
+ ///
+ /// The counterpart to indexDraftFile() for the send path: a draft that was
+ /// indexed while being composed is unlinked when it is sent, and its entry
+ /// must not linger as a ghost draft until the next sync.
+ void removeIndexedFile(const QString &path);
+
/// Batch tagging over whole threads. The UI holds thread ids, not message
/// ids, for rows it has not opened, so the resolution happens here where
/// the database handle lives. This is the path the archive/flag/delete