ec-company: showing popup only when in insertable state
This commit is contained in:
parent
7814771204
commit
f5a93379bc
|
@ -30,7 +30,7 @@
|
||||||
(require 'company nil t)
|
(require 'company nil t)
|
||||||
(require 'evil-collection)
|
(require 'evil-collection)
|
||||||
|
|
||||||
(declare-function company-tng-configure-default "company-tng")
|
(declare-function company-tng-mode "company-tng")
|
||||||
|
|
||||||
(defgroup evil-collection-company nil
|
(defgroup evil-collection-company nil
|
||||||
"Evil bindings for `company-mode'."
|
"Evil bindings for `company-mode'."
|
||||||
|
@ -47,11 +47,22 @@ be set through custom or before evil-collection loads."
|
||||||
:group 'evil-collection-company
|
:group 'evil-collection-company
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
|
(defcustom evil-collection-company-supported-states '(insert replace emacs)
|
||||||
|
"The `evil-state's which `company' function can be requested."
|
||||||
|
:type '(repeat symbol))
|
||||||
|
|
||||||
(defvar company-active-map)
|
(defvar company-active-map)
|
||||||
(defvar company-search-map)
|
(defvar company-search-map)
|
||||||
|
|
||||||
(defconst evil-collection-company-maps '(company-active-map company-search-map))
|
(defconst evil-collection-company-maps '(company-active-map company-search-map))
|
||||||
|
|
||||||
|
(defun evil-collection-company-supported-p (command &rest _)
|
||||||
|
"Return non-nil if `evil-state' is in supported states."
|
||||||
|
(cond
|
||||||
|
((eq command 'prefix)
|
||||||
|
(memq evil-state evil-collection-company-supported-states))
|
||||||
|
(t t)))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun evil-collection-company-setup ()
|
(defun evil-collection-company-setup ()
|
||||||
"Set up `evil' bindings for `company'."
|
"Set up `evil' bindings for `company'."
|
||||||
|
@ -77,7 +88,10 @@ be set through custom or before evil-collection loads."
|
||||||
(kbd "<escape>") 'company-search-abort)
|
(kbd "<escape>") 'company-search-abort)
|
||||||
|
|
||||||
;; Sets up YCMD like behavior.
|
;; Sets up YCMD like behavior.
|
||||||
(when evil-collection-company-use-tng (company-tng-configure-default)))
|
(when evil-collection-company-use-tng (company-tng-mode +1))
|
||||||
|
|
||||||
|
;; Make `company-mode' not show popup when not in supported state
|
||||||
|
(advice-add 'company-call-backend :before-while 'evil-collection-company-supported-p))
|
||||||
|
|
||||||
(provide 'evil-collection-company)
|
(provide 'evil-collection-company)
|
||||||
;;; evil-collection-company.el ends here
|
;;; evil-collection-company.el ends here
|
||||||
|
|
Loading…
Reference in New Issue