spacemacs/contrib/auto-completion/packages.el
Diego Berrocal 553e85cb15 yas-new-snippet tries to create a Snippet in ~/.emacs.d/snippets
This is because the list of snippet dirs had our
~/.emacs.d/private/snippets at the end so it doesn't guess that.
Something must have changed upstream. Also it's better to have our own
custom snippets to be first so as to override the default ones if we
pleased.
2015-05-16 00:52:22 -04:00

225 lines
8.6 KiB
EmacsLisp

;;; packages.el --- Auto-completion Layer packages File for Spacemacs
;;
;; 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
(setq auto-completion-packages
'(
auto-complete
ac-ispell
company
company-statistics
helm-c-yasnippet
hippie-exp
yasnippet
))
;; company-quickhelp from MELPA is not compatible with 24.3 anymore
(unless (version< emacs-version "24.4")
(push 'company-quickhelp auto-completion-packages))
(defun auto-completion/init-ac-ispell ()
(use-package ac-ispell
:defer t
:init
(progn
(setq ac-ispell-requires 4)
(eval-after-load 'auto-complete
'(ac-ispell-setup))
;; (add-hook 'markdown-mode-hook 'ac-ispell-ac-setup)
)))
(defun auto-completion/init-auto-complete ()
(use-package auto-complete
:defer t
:init
(setq ac-auto-start 0
ac-delay 0.2
ac-quick-help-delay 1.
ac-use-fuzzy t
ac-fuzzy-enable t
ac-comphist-file (concat spacemacs-cache-directory "ac-comphist.dat")
;; use 'complete when auto-complete is disabled
tab-always-indent 'complete
ac-dwim t)
:config
(progn
(require 'auto-complete-config)
(setq-default ac-sources '(ac-source-abbrev
ac-source-dictionary
ac-source-words-in-same-mode-buffers))
(when (configuration-layer/package-usedp 'yasnippet)
(push 'ac-source-yasnippet ac-sources))
(add-to-list 'completion-styles 'initials t)
(define-key ac-completing-map (kbd "C-j") 'ac-next)
(define-key ac-completing-map (kbd "C-k") 'ac-previous)
(define-key ac-completing-map (kbd "<S-tab>") 'ac-previous)
(spacemacs|diminish auto-complete-mode "" " a"))))
(defun auto-completion/init-company ()
(use-package company
:defer t
:init
(progn
(setq company-idle-delay 0.2
company-minimum-prefix-length 2
company-require-match nil
company-dabbrev-ignore-case nil
company-dabbrev-downcase nil
company-frontends '(company-pseudo-tooltip-frontend)
company-clang-prefix-guesser 'company-mode/more-than-prefix-guesser))
(defvar-local company-fci-mode-on-p nil)
(defun company-turn-off-fci (&rest ignore)
(when (boundp 'fci-mode)
(setq company-fci-mode-on-p fci-mode)
(when fci-mode (fci-mode -1))))
(defun company-maybe-turn-on-fci (&rest ignore)
(when company-fci-mode-on-p (fci-mode 1)))
(add-hook 'company-completion-started-hook 'company-turn-off-fci)
(add-hook 'company-completion-finished-hook 'company-maybe-turn-on-fci)
(add-hook 'company-completion-cancelled-hook 'company-maybe-turn-on-fci)
:config
(progn
(spacemacs|diminish company-mode "" " a")
;; key bindings
(defun spacemacs//company-complete-common-or-cycle-backward ()
"Complete common prefix or cycle backward."
(interactive)
(company-complete-common-or-cycle -1))
(spacemacs//auto-completion-set-RET-key-behavior 'company)
(spacemacs//auto-completion-set-TAB-key-behavior 'company)
(spacemacs//auto-completion-setup-key-sequence 'company)
(let ((map company-active-map))
(define-key map (kbd "C-/") 'company-search-candidates)
(define-key map (kbd "C-M-/") 'company-filter-candidates)
(define-key map (kbd "C-d") 'company-show-doc-buffer)
(define-key map (kbd "C-j") 'company-select-next)
(define-key map (kbd "C-k") 'company-select-previous)
(define-key map (kbd "C-l") 'company-complete-selection))
;; Nicer looking faces
(custom-set-faces
'(company-tooltip-common
((t (:inherit company-tooltip :weight bold :underline nil))))
'(company-tooltip-common-selection
((t (:inherit company-tooltip-selection :weight bold :underline nil)))))
;; Transformers
(defun spacemacs//company-transformer-cancel (candidates)
"Cancel completion if prefix is in the list
`company-mode-completion-cancel-keywords'"
(unless (member company-prefix company-mode-completion-cancel-keywords)
candidates))
(setq company-transformers '(spacemacs//company-transformer-cancel
company-sort-by-occurrence)))))
(defun auto-completion/init-company-statistics ()
(use-package company-statistics
:if auto-completion-enable-sort-by-usage
:defer t
:init
(progn
(setq company-statistics-file (concat spacemacs-cache-directory
"company-statistics-cache.el"))
(add-hook 'company-mode-hook 'company-statistics-mode))))
(defun auto-completion/init-company-quickhelp ()
(use-package company-quickhelp
:if (and auto-completion-enable-help-tooltip (display-graphic-p))
:defer t
:init (add-hook 'company-mode-hook 'company-quickhelp-mode)))
(defun auto-completion/init-helm-c-yasnippet ()
(use-package helm-c-yasnippet
:defer t
:init
(progn
(defun spacemacs/helm-yas ()
"Properly lazy load helm-c-yasnipper."
(interactive)
(spacemacs/load-yasnippet)
(require 'helm-c-yasnippet)
(call-interactively 'helm-yas-complete))
(evil-leader/set-key "is" 'spacemacs/helm-yas)
(setq helm-c-yas-space-match-any-greedy t))))
(defun auto-completion/init-hippie-exp ()
;; replace dabbrev-expand
(global-set-key (kbd "M-/") 'hippie-expand)
(define-key evil-insert-state-map (kbd "C-p") 'hippie-expand)
(setq hippie-expand-try-functions-list
'(
;; Try to expand word "dynamically", searching the current buffer.
try-expand-dabbrev
;; Try to expand word "dynamically", searching all other buffers.
try-expand-dabbrev-all-buffers
;; Try to expand word "dynamically", searching the kill ring.
try-expand-dabbrev-from-kill
;; Try to complete text as a file name, as many characters as unique.
try-complete-file-name-partially
;; Try to complete text as a file name.
try-complete-file-name
;; Try to expand word before point according to all abbrev tables.
try-expand-all-abbrevs
;; Try to complete the current line to an entire line in the buffer.
try-expand-list
;; Try to complete the current line to an entire line in the buffer.
try-expand-line
;; Try to complete as an Emacs Lisp symbol, as many characters as
;; unique.
try-complete-lisp-symbol-partially
;; Try to complete word as an Emacs Lisp symbol.
try-complete-lisp-symbol))
(when (configuration-layer/package-usedp 'yasnippet)
;; Try to expand yasnippet snippets based on prefix
(push 'yas-hippie-try-expand hippie-expand-try-functions-list)))
(defun auto-completion/init-yasnippet ()
(use-package yasnippet
:commands yas-global-mode
:init
(progn
;; disable yas minor mode map
;; use hippie-expand instead
(setq yas-minor-mode-map (make-sparse-keymap))
(defun spacemacs/load-yasnippet ()
(if (not (boundp 'yas-minor-mode))
(progn
(yas-global-mode 1)
(let ((private-yas-dir (concat configuration-layer-private-directory "snippets")))
(setq yas-snippet-dirs
(append (list private-yas-dir)
(when (boundp 'yas-snippet-dirs)
yas-snippet-dirs)))
(setq yas-wrap-around-region t)))))
(add-to-hooks 'spacemacs/load-yasnippet '(prog-mode-hook
markdown-mode-hook
org-mode-hook))
(spacemacs|add-toggle yasnippet
:status yas-minor-mode
:on (yas-minor-mode)
:off (yas-minor-mode -1)
:documentation "Enable yasnippet."
:evil-leader "ty")
(defun spacemacs/force-yasnippet-off ()
(yas-minor-mode -1)
(setq yas-dont-activate t))
(add-to-hooks 'spacemacs/force-yasnippet-off '(term-mode-hook
shell-mode-hook)))
:config
(progn
(spacemacs|diminish yas-minor-mode "" " y"))))