Subject: 29.0.50; Support sending patches from VC directly

From: Antoine Kalmbach <[email-masked]>
Date: Thu, 25 Aug 2022 11:47:54 +0300

See the discussion here

https://mail.gnu.org/archive/html/emacs-devel/2022-08/msg01059.html

The idea would be to support sending patches using Emacs mail user agent
capabilities directly from VC projects. This would depend on the chosen
VC backend and whether it has support for email-based workflows in the
first place.

The reference implementation would be for Git. A command such as
`vc-prepare-patch`, which would prompt for a Git revision range and then
generate a set of .patch files. These then would be opened in the mail
user agent configured in Emacs for sending.

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.17.6) of 2022-08-23 built on thanatos
Repository revision: 67a15ce1564ce35ece24a19f00e03a36e0575746
Repository branch: master
System Description: Fedora Linux 36 (Workstation Edition)

Configured using:
 'configure --with-x-toolkit=motif --with-json --with-native-compilation
 --with-pgtk --with-imagemagick --with-mailutils'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3
THREADS TIFF TOOLKIT_SCROLL_BARS XIM GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8

Major mode: notmuch-hello

Minor modes in effect:
  eros-mode: t
  electric-pair-mode: t
  global-corfu-mode: t
  corfu-mode: t
  marginalia-mode: t
  vertico-mode: t
  recentf-mode: t
  savehist-mode: t
  display-time-mode: t
  global-hl-line-mode: t
  global-auto-revert-mode: t
  winner-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/ane/.emacs.d/elpa/transient-20220806.2224/transient hides /usr/local/share/emacs/29.0.50/lisp/transient

Features:
(shadow emacsbug rfc2104 secrets dbus xml network-stream nsm mailalias
textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check eudc-capf eudc cus-edit cus-start cus-load eudc-vars sort
company-oddmuse company-keywords company-etags etags fileloop generator
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic
company-template company-bbdb company notmuch notmuch-tree notmuch-jump
notmuch-hello notmuch-show notmuch-print notmuch-crypto notmuch-mua
notmuch-message notmuch-draft notmuch-maildir-fcc notmuch-address
notmuch-company notmuch-parser format-spec notmuch-wash coolj goto-addr
icalendar diary-lib diary-loaddefs cal-menu calendar cal-loaddefs
notmuch-tag crm notmuch-lib notmuch-compat mm-view mml-smime smime
gnutls dig mule-util mail-extr flyspell ispell smex ido eros checkdoc
lisp-mnt noutline outline rainbow-mode color rainbow-delimiters paredit
eldoc-box eglot array xref flymake-proc flymake thingatpt compile comint
ansi-color project imenu jsonrpc ert pp ewoc debug backtrace advice
find-func vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs vc-svn vc-cvs
vc-rcs log-view pcvs-util vc vc-dispatcher bug-reference elec-pair corfu
marginalia vertico recentf tree-widget wid-edit cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
hydra lv smtpmail message sendmail yank-media puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util
text-property-search time-date mm-decode mm-bodies mm-encode mail-parse
rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev
mail-utils gmm-utils mailheader diminish modus-operandi-theme
modus-themes use-package-diminish edmacro kmacro use-package-bind-key
bind-key easy-mmode use-package-ensure use-package-core savehist comp
comp-cstr warnings icons rx cl-extra pcase finder-inf
ace-window-autoloads avy-autoloads clj-refactor-autoloads
cider-autoloads clojure-mode-extra-font-locking-autoloads
clojure-mode-autoloads company-autoloads consult-autoloads
corfu-doc-autoloads corfu-autoloads debbugs-autoloads diff-hl-autoloads
diminish-autoloads edit-indirect-autoloads eglot-autoloads
eldoc-box-autoloads eros-autoloads exec-path-from-shell-autoloads
expand-region-autoloads flycheck-autoloads geiser-guile-autoloads
geiser-impl help-fns radix-tree help-mode geiser-custom geiser-base
geiser-autoloads gif-screencast-autoloads go-mode-autoloads
google-c-style-autoloads graphviz-dot-mode-autoloads hl-todo-autoloads
hydra-autoloads inflections-autoloads keycast-autoloads
kind-icon-autoloads lv-autoloads magit-autoloads git-commit-autoloads
magit-section-autoloads marginalia-autoloads markdown-mode-autoloads
meson-mode-autoloads modus-themes-autoloads multiple-cursors-autoloads
neotree-autoloads ninja-mode-autoloads notmuch-autoloads
paredit-autoloads parseedn-autoloads parseclj-autoloads
pinentry-autoloads pkg-info-autoloads epl-autoloads
plantuml-mode-autoloads dash-autoloads queue-autoloads
rainbow-delimiters-autoloads rainbow-mode-autoloads rust-mode-autoloads
scss-mode-autoloads sesman-autoloads sly-asdf-autoloads popup-autoloads
sly-macrostep-autoloads macrostep-autoloads
sly-repl-ansi-color-autoloads sly-autoloads smex-autoloads
spinner-autoloads ssh-config-mode-autoloads svg-lib-autoloads
transient-autoloads tree-sitter-langs-autoloads tree-sitter-autoloads
tsc-autoloads typescript-mode-autoloads use-package-autoloads
bind-key-autoloads vertico-autoloads web-mode-autoloads wgrep-autoloads
with-editor-autoloads info compat-autoloads yaml-mode-autoloads
yasnippet-snippets-autoloads yasnippet-autoloads zig-mode-autoloads
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile cconv
url-vars time hl-line autorevert filenotify cl-loaddefs cl-lib winner
ring rmc iso-transl tooltip eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
term/common-win pgtk-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
gtk pgtk multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 815238 428939)
 (symbols 48 32388 106)
 (strings 32 177583 63256)
 (string-bytes 1 5448488)
 (vectors 16 78687)
 (vector-slots 8 1356913 2880582)
 (floats 8 317 2125)
 (intervals 56 1817 7744)
 (buffers 1000 18))

-- 
Antoine Kalmbach