Age | Commit message (Collapse) | Author |
|
A standard prefix command would do, but since piem-b4 already depends
on transient, use transient here as well to provide a more helpful
interface.
Message-Id: <20201109030034.11429-1-kyle@kyleam.com>
|
|
As of 30defdb (b4: Clean up temporary directories by default,
2020-09-27), piem-b4-am-from-mid is supposed to clean up its temporary
directory unless piem-b4-keep-temp-directory is non-nil. That commit,
however, missed an error case where the cleanup function needs to be
triggered.
Message-Id: <20201025192111.27439-1-kyle@kyleam.com>
|
|
|
|
Each piem-b4-am-from-mid call works in a new temporary directory.
Aside from debugging, there's no reason to keep these directories
around, polluting temporary-file-directory.
Message-Id: <20200927061446.2301-1-kyle@kyleam.com>
|
|
|
|
|
|
By default the HTML dir link points to /dir/index.html, which doesn't
exist in the case of docs.kyleam.com. Point docs.kyleam.com/ instead.
|
|
Message-Id: <20200921045801.24501-1-kyle@kyleam.com>
|
|
Let-bind mail-extr-ignore-realname-equals-mailbox-name to nil
(defaults to t) so that a sender name is returned for addresses like
"name <name@a.com>" and "name@a.com".
Also, let-bind mail-extr-ignore-single-names to its default value of
nil so that a user setting this option to t doesn't interfere with
piem-name-branch-who-what-v.
Message-Id: <20200921032214.16940-1-kyle@kyleam.com>
|
|
1000739 (Unescape message IDs extracted from URLs, 2020-09-19)
incorrectly/embarrassingly used the variable name from
piem-eww-get-mid.
|
|
These aren't too useful (and I don't want to duplicate what is or at
least should be in the manual), but they're better than nothing.
|
|
|
|
<blush>
|
|
All downstream code expects unescaped message IDs.
Message-Id: <20200919044639.26871-3-kyle@kyleam.com>
|
|
Message IDs can include characters that must escaped before being
included in the path part of public-inbox URLs. Add a variant of
url-hexify-string that uses the same set of characters as
public-inbox's mid_escape().
Message-Id: <20200919044639.26871-2-kyle@kyleam.com>
|
|
When 05f3ca5 (manual: A rough and incomplete start, 2020-08-25)
fleshed out the skeleton a bit, the individual nodes for the
integration libraries got dropped and the one for b4 got renamed.
|
|
|
|
|
|
I haven't decided how I want to deal with packaging, but in any case
there's no point in having a version heading for each library. Keep
the one in piem.el since there's no *-pkg.el file (at this point, at
least).
|
|
Avoid presenting the two am-ready variants as though they are early
stopping variants of piem-b4-am-from-mid. That's inaccurate, as they
don't go through any of the handling in piem-b4--get-am-files and are
meant to map directly to `b4 am [options] MID' and `b4 am [options]
--use-local-mbox=FILE'.
Also expand piem-b4-am-from-mid's description, hopefully providing a
better picture of what it's doing on top of a plain `b4 am' call.
Message-Id: <20200901032239.25361-1-kyle@kyleam.com>
|
|
|
|
Using the second group in piem-link-re is not reliable because the
trailing part of the URL may be anything. Instead get the inboxes
:url first and then generate a regular expression that has that value
as the prefix.
Message-Id: <20200828031920.7515-5-kyle@kyleam.com>
|
|
All the callers at the moment only care about the current inbox, but
this is still useful for avoiding a repeated call to piem-inbox (and
an upcoming commit will use it to do so).
Message-Id: <20200828031920.7515-4-kyle@kyleam.com>
|
|
There's no need to have a function like piem-inbox-url for every key.
Drop piem-inbox-url, but keep piem-inbox-coderepo around because it
does a bit of extra processing on top.
Message-Id: <20200828031920.7515-3-kyle@kyleam.com>
|
|
piem-elfeed-get-inbox and piem-eww-get-inbox match the URL against
piem-link-re and take the second group as the inbox name. That's a
bad approach because the inbox name in the URL doesn't necessarily
match the one in piem-inboxes. For example, public-inbox's own
archive is https://public-inbox.org/meta/, but my entry in
piem-inboxes uses the name "public-inbox":
("public-inbox" :url "https://public-inbox.org/meta/" ...)
The approach also fails if the URL isn't a public-inbox message URL
because piem-link-re isn't very specific. (That will be improved in
an upcoming commit.)
Find the inbox name by matching the buffer URL against the :url values
in piem-inboxes.
Message-Id: <20200828031920.7515-2-kyle@kyleam.com>
|
|
|
|
piem-download-and-decompress uses url-retrieve and a callback, setting
url-asynchronous to nil. This approach doesn't seem to be sufficient
because I'm getting intermittent failures in piem-b4--get-am-files
related to unfinished processes. And taking a peek at
url-retrieve-synchronously suggests that indeed a good amount more is
needed to do a synchronous call with url-retrieve.
Switch piem-download-and-decompress over to
url-retrieve-synchronously. I haven't noticed any issues with the
url-retrieve call in piem-inject-thread-into-maildir, but switch that
over too for simplicity and consistency.
Message-Id: <20200828025605.1106-1-kyle@kyleam.com>
|
|
|
|
|
|
|
|
|
|
|
|
In 846c69c (b4: Try to download thread from piem-inboxes URL,
2020-08-16), the "Maildir injection" section gained code that's used
more widely. Move it to its own section.
|
|
Notmuch users can set piem-mail-injection-skipif-predicate to the new
function.
Message-Id: <20200822190130.20397-4-kyle@kyleam.com>
|
|
piem-inject-thread-into-maildir allows pulling a thread from a
public-inbox URL, but repeating the process to get new messages in the
thread leads to duplicates in the local store. Add a predicate that
the caller can configure to avoid this.
Note that the predicate has the entire message available to make its
decision, but it's called with the message ID for convenience because
that's likely the only information needed to determine if the message
is already in the local store.
Message-Id: <20200822190130.20397-3-kyle@kyleam.com>
|
|
The message is going to get longer when skip counts are reported, so
try to save some characters.
Message-Id: <20200822190130.20397-2-kyle@kyleam.com>
|
|
If a call to piem-b4-am-from-mid fails to generate the thread for a
message ID via piem-mid-to-thread-functions, b4 is called without a
local mbox. In this case, b4 tries to download the thread from the
URL specified by b4.midmask in the caller's Git configuration.
That works, but it's inconvenient because the user needs to configure
the URL in two places. If the current buffer is associated with an
inbox in piem-inboxes, try to download the thread from its :url before
falling back to b4's midmask.
Message-Id: <20200817013343.15615-6-kyle@kyleam.com>
|
|
Message-Id: <20200817013343.15615-5-kyle@kyleam.com>
|
|
An upcoming commit will use this same logic in another callback.
Message-Id: <20200817013343.15615-4-kyle@kyleam.com>
|
|
This will be needed in another spot.
Message-Id: <20200817013343.15615-3-kyle@kyleam.com>
|
|
Message-Id: <20200817013343.15615-2-kyle@kyleam.com>
|
|
The other methods return expanded absolute paths. Do the same here.
Message-Id: <20200816185130.32703-4-kyle@kyleam.com>
|
|
When piem-inbox-coderepo-maybe-read is called from within a project,
the current project isn't included in the collection because
projectile-relevant-known-projects excludes it when
projectile-current-project-on-switch is at its default value. That's
undesirable in this context; if there's a current project, it's likely
the one of interest (e.g., calling piem-b4-am-ready-from-mbox from a
project's directory).
Add the current project to the collection and make it the default.
Also, don't bother going down the projectile branch if there are no
known projects.
Message-Id: <20200816185130.32703-3-kyle@kyleam.com>
|
|
While it's possible that the caller wants to specify a path for a repo
that isn't yet registered as a project, it should be quite rare, and
disabling it decreases the chances of invalid input.
Message-Id: <20200816185130.32703-2-kyle@kyleam.com>
|
|
Message-Id: <20200816185130.32703-1-kyle@kyleam.com>
|
|
When called interactively, piem-am retrieves the mbox with
piem-am-ready-mbox. As piem-am-ready-mbox's docstring says, the
caller is responsible for cleaning up the buffer. Make piem-am do so
to avoid leaving a hidden buffer around for each mbox applied.
Message-Id: <20200811043220.14679-1-kyle@kyleam.com>
|
|
0ee97e9 (Explicitly specify --patch-format in git-am calls,
2020-08-09) made it possible for a piem-am-ready-mbox-functions member
to specify the format of the mbox by returning (FUNCTION FORMAT). If
FUNCTION is returned, then mboxrd is supposed to be taken as the
default format. The handling is broken, though, because
piem-am-ready-mbox tries to detect the (FUNCTION FORMAT) form with
listp, but that of course also returns true when the return value is
simply a function.
Instead, check to see whether the element matches a valid format
value. Switch from (FUNCTION FORMAT) to (FUNCTION . FORMAT) to make
it more convenient to pull out FORMAT with cdr-safe.
Message-Id: <877du5c1nz.fsf@kyleam.com>
|
|
The sources of mbox patches fed to git-am are 1) threads downloaded
from a public-inbox HTTP instance, 2) mboxes generated via
piem-mid-to-thread-functions, and 3) those generated via
piem-am-ready-mbox-functions. The first source should always be
mboxrd. For the second, piem-notmuch-mid-to-thread is currently the
only function suitable for piem-mid-to-thread-functions, and it uses
mboxrd. The third source is a mix between mbox and mboxrd.
By default, git-am tries to auto-detect the patch format, but let's
explicitly specify --patch-format to avoid any incorrect guesses.
Message-Id: <20200810020704.30150-1-kyle@kyleam.com>
|
|
|
|
It makes sense for all of these functions to support gnus-summary-mode
because point is often in the summary buffer when reading a thread. I
punted on doing so initially because something probably should be done
to ensure that the gnus-article-* variables that these functions rely
on are up to date with the current line in the summary buffer.
I'm still not sure of the best way to do that (assuming it really is
an issue), but I think for common usage patterns the values won't be
stale (e.g., browsing with gnus-summary-next-page and
gnus-summary-next-unread-article), so simply relying on the current
values may be good enough.
|