Stuff that could make work on Emacs itself more smooth. * Changelog ** Action stamps I don't know any function to 1. generate them from a Git commit, a *vc-change-log* buffer… 2. convert them back to a Git commit, a *vc-diff* buffer… They can almost be generated with: #+BEGIN_SRC sh git show --no-patch \ --date=format:"%FT%T%z" \ --format=format:"%ad!%ae" #+END_SRC Except that [[https://tools.ietf.org/html/rfc3339][RFC3339]] says: #+BEGIN_QUOTE time-numoffset = ("+" / "-") time-hour ":" time-minute #+END_QUOTE While ~%z~ yields "+hhmm" or "-hhmm". Also [[http://esr.ibiblio.org/?p=3872][ESR wants Zulu time]]. See also - bug#20609 - https://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00252.html This monstrosity does the job: #+begin_src elisp (defun my/revision-at-point () (cond ;; TODO: add vc support. ((derived-mode-p 'magit-mode) (magit-branch-or-commit-at-point)))) (eval-when-compile ;; Load rx's pcase pattern. (require 'rx)) (defun my/action-stamp-at-point (rev) (interactive (list (let* ((rev (my/revision-at-point)) (prompt (if rev (format "Revision? (%s) " rev) "Revision? "))) (read-string prompt nil nil rev)))) (let* ((cmd "git show --no-patch --date=unix --format='%ad!%ae'") (git-info (shell-command-to-string (format "%s %s" cmd rev)))) (pcase git-info ((rx (let timestamp-str (+ digit)) "!" (let mail (+ anychar)) "\n") (let* ((timestamp (string-to-number timestamp-str)) (date (format-time-string "%FT%TZ" timestamp t)) (action-stamp (format "%s!%s" date mail))) (kill-new action-stamp) (message action-stamp)))))) #+end_src ESR's =git stamp= alias in [[https://gitlab.com/esr/reposurgeon/-/blob/4.5/reposurgeon-git-aliases][reposurgeon]]: #+begin_src conf # git stamp - print a reposurgeon-style action stamp # This always goes to the committer. It would be better to look at thwe author # timestamp first and fall back to commmitter, because the author stamp because # doesn't change when patches are replayed onto a repository, while the commit # stamp will. stamp = show -s --format='%cI!%ce' #+end_src This alias seems to confirm my feeling that Zulu time is not worth bothering with: ISO 8601 is just as machine-parseable, and the timezone bit actually conveys meaning to a human reader. * Bug tracker ** Asynchronous client It would be wonderful if ~debbugs-gnu~ and ~debbugs-gnu-search~ used their own thread/process to wait & process the server's response, instead of forcing me to twiddle my thumbs for minutes. ** Attachment management Thanks to Bob Proulx, I learned that one can 1. send attachments to nnn-quiet@debbugs.gnu.org, 2. (for large attachments, wait for moderation,) 3. go to https://debbugs.gnu.org/nnn and grab the URLs for the attachments, 4. send a followup mentioning these URLs to nnn@debbugs.gnu.org. When compared to simply attaching files to one's messages, this ensures (1) only large attachments get moderated: reports and patches keep flowing freely (2) mail clients do not stall while browsing threads, since messages sent to -quiet are not forwarded to the mailing list. It'd be neat if Debbugs had a way to automate the -quiet attachment trick, e.g. - send some attachments to nnn-attach@debbugs.gnu.org, - Debbugs then sends a mail to nnn@debbugs.gnu.org saying: #+begin_example John Doe attached: config.log (150 kB) repro.sh (400 B) #+end_example ([[https://lists.gnu.org/archive/html/help-debbugs/2020-07/msg00004.html][help-debbugs thread]]) * Mailing lists ** Message IDs *** Summary buffer → Message-ID #+begin_src elisp (kill-new (mail-header-message-id (gnus-summary-article-header))) #+end_src *** TODO Message-ID → HTTP archive - : #+begin_example https://lists.gnu.org/archive/cgi-bin/namazu.cgi ?query=%2Bmessage-id:<$MESSAGE_ID> &submit=Search! &idxname=$LIST #+end_example - public-inbox: trivial *** TODO HTTP archive → Message-ID - : cf. =X-Message-Id= comment in HTML - public-inbox: cf. URL