aboutsummaryrefslogtreecommitdiff
path: root/piem.el
diff options
context:
space:
mode:
Diffstat (limited to 'piem.el')
-rw-r--r--piem.el21
1 files changed, 16 insertions, 5 deletions
diff --git a/piem.el b/piem.el
index b66894f..24d252e 100644
--- a/piem.el
+++ b/piem.el
@@ -444,7 +444,7 @@ buffer."
nil))))
-;;;; Download helpers
+;;;; Link handling
(defconst piem--unreserved-chars
(append url-unreserved-chars
@@ -456,6 +456,20 @@ buffer."
"Escape MID for use in path part of a public-inbox URL."
(url-hexify-string mid piem--unreserved-chars))
+(defun piem-mid-url (mid &optional inbox)
+ "Return a public-inbox URL for MID.
+The URL is determined by INBOX's entry in `piem-inboxes'. If
+INBOX is nil, use the inbox returned by `piem-inbox'."
+ (concat
+ (piem--ensure-trailing-slash
+ (or (piem-inbox-get :url inbox)
+ (user-error "Couldn't find URL for %s"
+ (or inbox "current buffer"))))
+ (piem-escape-mid mid)))
+
+
+;;;; Download helpers
+
(defvar piem--has-gunzip)
(defun piem-check-gunzip ()
"Return non-nil if gunzip is available."
@@ -550,10 +564,7 @@ This function depends on :url being configured for entries in
"`piem-maildir-directory' does not look like a Maildir directory"))
((not (or message-only (piem-check-gunzip)))
(user-error "gunzip executable not found")))
- (when-let ((url (concat (or (piem-inbox-get :url)
- (user-error
- "Could not find inbox URL for current buffer"))
- (piem-escape-mid mid)
+ (when-let ((url (concat (piem-mid-url mid)
(if message-only "/raw" "/t.mbox.gz")))
(buffer (url-retrieve-synchronously url 'silent)))
(unwind-protect