From 847c0b12a00d2f4abc1137e61489b08b1eee8093 Mon Sep 17 00:00:00 2001 From: syl20bnr Date: Sat, 11 Apr 2015 15:10:21 -0400 Subject: [PATCH] Move auto-completion macros to core --- core/core-auto-completion.el | 66 ++++++++++++++++++++++++++++++++++++ core/core-spacemacs.el | 1 + spacemacs/funcs.el | 49 -------------------------- 3 files changed, 67 insertions(+), 49 deletions(-) create mode 100644 core/core-auto-completion.el diff --git a/core/core-auto-completion.el b/core/core-auto-completion.el new file mode 100644 index 000000000..0a38ecc3f --- /dev/null +++ b/core/core-auto-completion.el @@ -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 +;; 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) diff --git a/core/core-spacemacs.el b/core/core-spacemacs.el index 5b1dc311f..fee98f386 100644 --- a/core/core-spacemacs.el +++ b/core/core-spacemacs.el @@ -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) diff --git a/spacemacs/funcs.el b/spacemacs/funcs.el index dda5f1654..0562ae9fd 100644 --- a/spacemacs/funcs.el +++ b/spacemacs/funcs.el @@ -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