X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch-address.el;h=ca4da3f367f5e985b614adfbff7fe40bd706ff11;hp=15c709da70a43b6eb0aa7dc8128b8c322df11846;hb=6fb7d35069c8770b872128156cb4f0511da6b6e9;hpb=9951598d11f9e883374d295f886009cdb64d8f63 diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el index 15c709da..ca4da3f3 100644 --- a/emacs/notmuch-address.el +++ b/emacs/notmuch-address.el @@ -29,11 +29,11 @@ (declare-function company-manual-begin "company") (defvar notmuch-address-last-harvest 0 - "Time of last address harvest") + "Time of last address harvest.") (defvar notmuch-address-completions (make-hash-table :test 'equal) "Hash of email addresses for completion during email composition. - This variable is set by calling `notmuch-address-harvest'.") +This variable is set by calling `notmuch-address-harvest'.") (defvar notmuch-address-full-harvest-finished nil "t indicates that full completion address harvesting has been @@ -66,17 +66,18 @@ disabled." (const :tag "Disable address completion" nil) (string :tag "Use external completion command")) :group 'notmuch-send + :group 'notmuch-address :group 'notmuch-external) (defcustom notmuch-address-internal-completion '(sent nil) "Determines how internal address completion generates candidates. This should be a list of the form '(DIRECTION FILTER), where - DIRECTION is either sent or received and specifies whether the - candidates are searched in messages sent by the user or received - by the user (note received by is much faster), and FILTER is - either nil or a filter-string, such as \"date:1y..\" to append - to the query." +DIRECTION is either sent or received and specifies whether the +candidates are searched in messages sent by the user or received +by the user (note received by is much faster), and FILTER is +either nil or a filter-string, such as \"date:1y..\" to append +to the query." :type '(list :tag "Use internal address completion" (radio :tag "Base completion on messages you have" @@ -93,6 +94,7 @@ This should be a list of the form '(DIRECTION FILTER), where (setq notmuch-address-completions (clrhash notmuch-address-completions)) (setq notmuch-address-full-harvest-finished nil)) :group 'notmuch-send + :group 'notmuch-address :group 'notmuch-external) (defcustom notmuch-address-save-filename nil @@ -104,6 +106,7 @@ should make sure it is not somewhere publicly readable." :type '(choice (const :tag "Off" nil) (file :tag "Filename")) :group 'notmuch-send + :group 'notmuch-address :group 'notmuch-external) (defcustom notmuch-address-selection-function 'notmuch-address-selection-function @@ -115,6 +118,7 @@ See documentation of function `notmuch-address-selection-function' to know how address selection is made by default." :type 'function :group 'notmuch-send + :group 'notmuch-address :group 'notmuch-external) (defcustom notmuch-address-post-completion-functions nil @@ -122,8 +126,7 @@ to know how address selection is made by default." The completed address is passed as an argument to each function. Note that this hook will be invoked for completion in headers -matching `notmuch-address-completion-headers-regexp'. -" +matching `notmuch-address-completion-headers-regexp'." :type 'hook :group 'notmuch-address :group 'notmuch-hooks) @@ -143,9 +146,10 @@ matching `notmuch-address-completion-headers-regexp'. (message "calling notmuch-address-message-insinuate is no longer needed")) (defcustom notmuch-address-use-company t - "If available, use company mode for address completion" + "If available, use company mode for address completion." :type 'boolean - :group 'notmuch-send) + :group 'notmuch-send + :group 'notmuch-address) (defun notmuch-address-setup () (let* ((setup-company (and notmuch-address-use-company @@ -154,7 +158,7 @@ matching `notmuch-address-completion-headers-regexp'. #'notmuch-address-expand-name))) (when setup-company (notmuch-company-setup)) - (unless (memq pair message-completion-alist) + (unless (member pair message-completion-alist) (setq message-completion-alist (push pair message-completion-alist))))) @@ -191,10 +195,11 @@ external commands." ((eq notmuch-address-command 'internal) (unless (notmuch-address--harvest-ready) ;; First, run quick synchronous harvest based on what the user - ;; entered so far + ;; entered so far. (notmuch-address-harvest original t)) (prog1 (notmuch-address-matching original) - ;; Then start the (potentially long-running) full asynchronous harvest if necessary + ;; Then start the (potentially long-running) full asynchronous + ;; harvest if necessary. (notmuch-address-harvest-trigger))) (t (process-lines notmuch-address-command original)))) @@ -237,7 +242,8 @@ external commands." (push chosen notmuch-address-history) (delete-region beg end) (insert chosen) - (run-hook-with-args 'notmuch-address-post-completion-functions chosen)) + (run-hook-with-args 'notmuch-address-post-completion-functions + chosen)) (message "No matches.") (ding)))) (t nil))) @@ -280,7 +286,7 @@ external commands." (defvar notmuch-address-harvest-procs '(nil . nil) "The currently running harvests. -The car is a partial harvest, and the cdr is a full harvest") +The car is a partial harvest, and the cdr is a full harvest.") (defun notmuch-address-harvest (&optional addr-prefix synchronous callback) "Collect addresses completion candidates. @@ -296,7 +302,6 @@ matching ADDR-PREFIX*' are queried. Address harvesting may take some time so the address collection runs asynchronously unless SYNCHRONOUS is t. In case of asynchronous execution, CALLBACK is called when harvesting finishes." - (let* ((sent (eq (car notmuch-address-internal-completion) 'sent)) (config-query (cadr notmuch-address-internal-completion)) (prefix-query (when addr-prefix @@ -312,7 +317,7 @@ execution, CALLBACK is called when harvesting finishes." (when config-query (format " and (%s)" config-query))) from-or-to-me-query)) - (args `("address" "--format=sexp" "--format-version=2" + (args `("address" "--format=sexp" "--format-version=4" ,(if sent "--output=recipients" "--output=sender") "--deduplicate=address" ,query))) @@ -329,7 +334,6 @@ execution, CALLBACK is called when harvesting finishes." ;; Kill any existing process (when current-proc (kill-buffer (process-buffer current-proc))) ; this also kills the process - (setq current-proc (apply 'notmuch-start-notmuch proc-name proc-buf callback ; process sentinel @@ -389,10 +393,11 @@ to be a saved address hash." ;; The file exists, check it is a file we saved (notmuch-address--get-address-hash)) (with-temp-file notmuch-address-save-filename - (let ((save-plist (list :version notmuch-address--save-hash-version - :completion-settings notmuch-address-internal-completion - :last-harvest notmuch-address-last-harvest - :completions notmuch-address-completions))) + (let ((save-plist + (list :version notmuch-address--save-hash-version + :completion-settings notmuch-address-internal-completion + :last-harvest notmuch-address-last-harvest + :completions notmuch-address-completions))) (print "notmuch-address-hash" (current-buffer)) (print save-plist (current-buffer)))) (message "\ @@ -404,16 +409,17 @@ appear to be an address savefile. Not overwriting." (let ((now (float-time))) (when (> (- now notmuch-address-last-harvest) 86400) (setq notmuch-address-last-harvest now) - (notmuch-address-harvest nil nil - (lambda (proc event) - ;; If harvest fails, we want to try - ;; again when the trigger is next - ;; called - (if (string= event "finished\n") - (progn - (notmuch-address--save-address-hash) - (setq notmuch-address-full-harvest-finished t)) - (setq notmuch-address-last-harvest 0))))))) + (notmuch-address-harvest + nil nil + (lambda (proc event) + ;; If harvest fails, we want to try + ;; again when the trigger is next + ;; called + (if (string= event "finished\n") + (progn + (notmuch-address--save-address-hash) + (setq notmuch-address-full-harvest-finished t)) + (setq notmuch-address-last-harvest 0))))))) ;;