Move auto-completion macros to core
This commit is contained in:
parent
9f182c53b9
commit
847c0b12a0
66
core/core-auto-completion.el
Normal file
66
core/core-auto-completion.el
Normal file
|
@ -0,0 +1,66 @@
|
|||
;;; core-auto-completion.el --- Spacemacs Core File
|
||||
;;
|
||||
;; Copyright (c) 2012-2014 Sylvain Benner
|
||||
;; Copyright (c) 2014-2015 Sylvain Benner & Contributors
|
||||
;;
|
||||
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
||||
;; URL: https://github.com/syl20bnr/spacemacs
|
||||
;;
|
||||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
;;; License: GPLv3
|
||||
|
||||
;; Company -------------------------------------------------------------------
|
||||
|
||||
(defmacro spacemacs|defvar-company-backends (mode)
|
||||
"Define a MODE specific company backend variable with default backends.
|
||||
The variable name format is company-backends-MODE."
|
||||
`(defvar ,(intern (format "company-backends-%S" mode))
|
||||
'((company-dabbrev-code company-gtags company-etags company-keywords)
|
||||
company-files company-dabbrev)
|
||||
,(format "Company backend list for %S" mode)))
|
||||
|
||||
(defmacro spacemacs|add-company-hook (mode)
|
||||
"Enable company for the given MODE.
|
||||
MODE must match the symbol passed in `spacemacs|defvar-company-backends'.
|
||||
The initialization function is hooked to `MODE-hook'."
|
||||
(let ((mode-hook (intern (format "%S-hook" mode)))
|
||||
(func (intern (format "spacemacs//init-company-%S" mode))))
|
||||
`(when (configuration-layer/package-usedp 'company)
|
||||
(defun ,func ()
|
||||
,(format "Initialize company for %S" mode)
|
||||
(set (make-variable-buffer-local 'auto-completion-front-end)
|
||||
'company)
|
||||
(set (make-variable-buffer-local 'company-backends)
|
||||
,(intern (format "company-backends-%S" mode))))
|
||||
(add-hook ',mode-hook ',func t)
|
||||
(add-hook ',mode-hook 'company-mode t))))
|
||||
|
||||
(defmacro spacemacs|disable-company (mode)
|
||||
"Disable company for the given MODE.
|
||||
MODE parameter must match the parameter used in the call to
|
||||
`spacemacs|add-company-hook'."
|
||||
(let ((mode-hook (intern (format "%S-hook" mode)))
|
||||
(func (intern (format "spacemacs//init-company-%S" mode))))
|
||||
`(progn
|
||||
(remove-hook ',mode-hook ',func)
|
||||
(remove-hook ',mode-hook 'company-mode))))
|
||||
|
||||
;; Auto-complete -------------------------------------------------------------
|
||||
|
||||
(defmacro spacemacs|enable-auto-complete (mode)
|
||||
"Enable auto-complete for the given MODE.
|
||||
The initialization function is hooked to `MODE-hook'."
|
||||
(let ((mode-hook (intern (format "%S-hook" mode)))
|
||||
(func (intern (format "spacemacs//init-auto-complete-%S" mode))))
|
||||
`(when (configuration-layer/package-usedp 'auto-complete)
|
||||
(defun ,func ()
|
||||
,(format "Initialize auto-complete for %S" mode)
|
||||
(set (make-variable-buffer-local 'auto-completion-front-end)
|
||||
'auto-complete)
|
||||
(set (make-variable-buffer-local 'company-backends)
|
||||
,(intern (format "company-backends-%S" mode))))
|
||||
(add-hook ',mode-hook ',func)
|
||||
(add-hook ',mode-hook 'auto-complete-mode))))
|
||||
|
||||
(provide 'core-auto-completion)
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
(require 'subr-x nil 'noerror)
|
||||
(require 'core-emacs-backports)
|
||||
(require 'core-auto-completion)
|
||||
(require 'core-themes-support)
|
||||
(require 'core-fonts-support)
|
||||
(require 'core-spacemacs-buffer)
|
||||
|
|
|
@ -841,52 +841,3 @@ If ASCII si not provided then UNICODE is used instead."
|
|||
(interactive)
|
||||
(let ((comint-buffer-maximum-size 0))
|
||||
(comint-truncate-buffer)))
|
||||
|
||||
;; begin Auto-completion helpers
|
||||
|
||||
(defmacro spacemacs|defvar-company-backends (mode)
|
||||
"Define a MODE specific company backend variable with default backends.
|
||||
The variable name format is company-backends-MODE."
|
||||
`(defvar ,(intern (format "company-backends-%S" mode))
|
||||
'((company-dabbrev-code company-gtags company-etags company-keywords)
|
||||
company-files company-dabbrev)
|
||||
,(format "Company backend list for %S" mode)))
|
||||
|
||||
(defmacro spacemacs|add-company-hook (mode)
|
||||
"Enable company for the given MODE.
|
||||
MODE must match the symbol passed in `spacemacs|defvar-company-backends'.
|
||||
The initialization function is hooked to `MODE-hook'."
|
||||
(let ((mode-hook (intern (format "%S-hook" mode)))
|
||||
(func (intern (format "spacemacs//init-company-%S" mode))))
|
||||
`(when (configuration-layer/package-usedp 'company)
|
||||
(defun ,func ()
|
||||
,(format "Initialize company for %S" mode)
|
||||
(set (make-variable-buffer-local 'auto-completion-front-end)
|
||||
'company)
|
||||
(set (make-variable-buffer-local 'company-backends)
|
||||
,(intern (format "company-backends-%S" mode))))
|
||||
(add-hook ',mode-hook ',func t)
|
||||
(add-hook ',mode-hook 'company-mode t))))
|
||||
|
||||
(defmacro spacemacs|disable-company (mode)
|
||||
"Disable company for the given MODE.
|
||||
MODE parameter must match the parameter used in the call to
|
||||
`spacemacs|add-company-hook'."
|
||||
)
|
||||
|
||||
(defmacro spacemacs|enable-auto-complete (mode)
|
||||
"Enable auto-complete for the given MODE.
|
||||
The initialization function is hooked to `MODE-hook'."
|
||||
(let ((mode-hook (intern (format "%S-hook" mode)))
|
||||
(func (intern (format "spacemacs//init-auto-complete-%S" mode))))
|
||||
`(when (configuration-layer/package-usedp 'auto-complete)
|
||||
(defun ,func ()
|
||||
,(format "Initialize auto-complete for %S" mode)
|
||||
(set (make-variable-buffer-local 'auto-completion-front-end)
|
||||
'auto-complete)
|
||||
(set (make-variable-buffer-local 'company-backends)
|
||||
,(intern (format "company-backends-%S" mode))))
|
||||
(add-hook ',mode-hook ',func)
|
||||
(add-hook ',mode-hook 'auto-complete-mode))))
|
||||
|
||||
;; end Auto-completion helpers
|
||||
|
|
Loading…
Reference in a new issue