From fdc88b81fef763f7d7dcdc899aa8e90482c574fa Mon Sep 17 00:00:00 2001 From: Utkarsh Singh 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