On Tue, Feb 08 2022, Utkarsh Singh wrote: > Hello maintainers, > > Emacs Lisp Package Archive (ELPA) now includes a package called 'corfu', > according to its documentation: > > Corfu enhances the default completion in region function with a > completion overlay. The current candidates are shown in a popup > below or above the point. Corfu is the minimalistic > ~completion-in-region~ counterpart of the > [[https://github.com/minad/vertico][Vertico]] minibuffer UI. > > Hence, this patch tries to add support for `completion-in-region' in > `notmuch-address-expand-name'. By default, this behaviour is turned off > so that existing users can enjoy existing completion techniques.
The current "default" (i.e. w/o any notmuch emacs mua configuration) is to use completing-read to do the completion. If "company" is available, then company is used by default (w/ all address harvesting and so on...). This is "messy" enough ;( (i.e the notmuch-address-selection-function is called if company mode is not available or notmuch-address-command is a string instead of 'internal or 'as-is (or whatnot, too tired to do deep investigation there ;/) This change, contributes even more "complexity" there. To keep the complexity to the same level would be adding more notmuch-address-selection-functions and have the defcustom there list the options (also probably the name of notmuch-address-selection-function would need to be changed to notmuch-fallback-address-selection-function ;/) Also, if name was notmuch-address-selection-function but its interface changed, current users using their own functions (I am in that list) would get error there (the interface would have to be (defun notmuch-address-selection-function (prompt collection initial-input &optional beg end) to be backward compatible) If name was changed then their own function would not be used -- which is OK, things change and users can read from NEWS how to be compatible again... All this said, I think this is not simple to solve, as this otherwise fine change would indicate :/ Tomi > > Thank you, > Utkarsh Singh > -- > Utkarsh Singh > https://utkarshsingh.xyz/ > From fdc88b81fef763f7d7dcdc899aa8e90482c574fa Mon Sep 17 00:00:00 2001 > From: Utkarsh Singh <utkarsh190...@gmail.com> > Date: Tue, 8 Feb 2022 19:17:26 +0530 > Subject: [PATCH] emacs: Add more front ends for address completion > > Add support for address completion through completion-in-region. > * notmuch-address.el (notmuch-address-use-completion-in-region): > Introduce customizable variable to activate the new front end. > (notmuch-address-selection-function, notmuch-address-expand-name): Use > it. > --- > emacs/notmuch-address.el | 28 ++++++++++++++++++---------- > 1 file changed, 18 insertions(+), 10 deletions(-) > > diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el > index 1a4cdda2..cfb56a3a 100644 > --- a/emacs/notmuch-address.el > +++ b/emacs/notmuch-address.el > @@ -123,10 +123,10 @@ you should make sure it is not somewhere publicly > readable." > (defcustom notmuch-address-selection-function > 'notmuch-address-selection-function > "The function to select address from given list. > > -The function is called with PROMPT, COLLECTION, and INITIAL-INPUT > -as arguments (subset of what `completing-read' can be called > -with). While executed the value of `completion-ignore-case' > -is t. See documentation of function > +The function is called with PROMPT, COLLECTION, INITIAL-INPUT, > +BEG and END as arguments (subset of what `completing-read' can be > +called with). While executed the value of > +`completion-ignore-case' is t. See documentation of function > `notmuch-address-selection-function' to know how address > selection is made by default." > :type 'function > @@ -150,13 +150,19 @@ matching `notmuch-address-completion-headers-regexp'." > :group 'notmuch-send > :group 'notmuch-address) > > +(defcustom notmuch-address-use-completion-in-region nil > + "Use `completion-in-region' for address completion." > + :type 'boolean > + :group 'notmuch-send > + :group 'notmuch-address) > + > ;;; Setup > > -(defun notmuch-address-selection-function (prompt collection initial-input) > - "Call (`completing-read' > - PROMPT COLLECTION nil nil INITIAL-INPUT 'notmuch-address-history)" > - (completing-read > - prompt collection nil nil initial-input 'notmuch-address-history)) > +(defun notmuch-address-selection-function (prompt collection initial-input > beg end) > + (if notmuch-address-use-completion-in-region > + (completion-in-region beg end collection) > + (completing-read > + prompt collection nil nil initial-input 'notmuch-address-history))) > > (defvar notmuch-address-completion-headers-regexp > > "^\\(Resent-\\)?\\(To\\|B?Cc\\|Reply-To\\|From\\|Mail-Followup-To\\|Mail-Copies-To\\):") > @@ -245,7 +251,9 @@ requiring external commands." > (funcall notmuch-address-selection-function > (format "Address (%s matches): " num-options) > options > - orig))))) > + orig > + beg > + end))))) > (if chosen > (progn > (push chosen notmuch-address-history) > -- > 2.35.1 _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org