mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 11:58:10 +01:00
emacs: address: allow internal completion on an individual basis
This commit makes two changes. The first allows the user to override an external completion method with the internal notmuch address based completion for an individual buffer. Secondly, if the user has company-mode enabled then it sets up company mode (based on internal completion) but disables the automatic timeout completion -- the user can still activate it in when desired with standard company commands such as company-complete.
This commit is contained in:
parent
2cf0ef3998
commit
827c28a04e
2 changed files with 23 additions and 4 deletions
|
@ -118,17 +118,30 @@ to know how address selection is made by default."
|
||||||
:group 'notmuch-send)
|
:group 'notmuch-send)
|
||||||
|
|
||||||
(defun notmuch-address-setup ()
|
(defun notmuch-address-setup ()
|
||||||
(let* ((use-company (and notmuch-address-use-company
|
(let* ((setup-company (and notmuch-address-use-company
|
||||||
(eq notmuch-address-command 'internal)
|
|
||||||
(require 'company nil t)))
|
(require 'company nil t)))
|
||||||
(pair (cons notmuch-address-completion-headers-regexp
|
(pair (cons notmuch-address-completion-headers-regexp
|
||||||
#'notmuch-address-expand-name)))
|
#'notmuch-address-expand-name)))
|
||||||
(when use-company
|
(when setup-company
|
||||||
(notmuch-company-setup))
|
(notmuch-company-setup))
|
||||||
(unless (memq pair message-completion-alist)
|
(unless (memq pair message-completion-alist)
|
||||||
(setq message-completion-alist
|
(setq message-completion-alist
|
||||||
(push pair message-completion-alist)))))
|
(push pair message-completion-alist)))))
|
||||||
|
|
||||||
|
(defun notmuch-address-toggle-internal-completion ()
|
||||||
|
"Toggle use of internal completion for current buffer.
|
||||||
|
|
||||||
|
This overrides the global setting for address completion and
|
||||||
|
toggles the setting in this buffer."
|
||||||
|
(interactive)
|
||||||
|
(if (local-variable-p 'notmuch-address-command)
|
||||||
|
(kill-local-variable 'notmuch-address-command)
|
||||||
|
(setq-local notmuch-address-command 'internal))
|
||||||
|
(if (boundp 'company-idle-delay)
|
||||||
|
(if (local-variable-p 'company-idle-delay)
|
||||||
|
(kill-local-variable 'company-idle-delay)
|
||||||
|
(setq-local company-idle-delay nil))))
|
||||||
|
|
||||||
(defun notmuch-address-matching (substring)
|
(defun notmuch-address-matching (substring)
|
||||||
"Returns a list of completion candidates matching SUBSTRING.
|
"Returns a list of completion candidates matching SUBSTRING.
|
||||||
The candidates are taken from `notmuch-address-completions'."
|
The candidates are taken from `notmuch-address-completions'."
|
||||||
|
|
|
@ -47,7 +47,13 @@
|
||||||
(defun notmuch-company-setup ()
|
(defun notmuch-company-setup ()
|
||||||
(company-mode)
|
(company-mode)
|
||||||
(make-local-variable 'company-backends)
|
(make-local-variable 'company-backends)
|
||||||
(setq company-backends '(notmuch-company)))
|
(setq company-backends '(notmuch-company))
|
||||||
|
;; Disable automatic company completion unless an internal
|
||||||
|
;; completion method is configured. Company completion (using
|
||||||
|
;; internal completion) can still be accessed via standard company
|
||||||
|
;; functions, e.g., company-complete.
|
||||||
|
(unless (eq notmuch-address-command 'internal)
|
||||||
|
(setq-local company-idle-delay nil)))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun notmuch-company (command &optional arg &rest _ignore)
|
(defun notmuch-company (command &optional arg &rest _ignore)
|
||||||
|
|
Loading…
Reference in a new issue