From 845126dac0b847c664e57add5acf642f01b872f8 Mon Sep 17 00:00:00 2001 From: syl20bnr Date: Wed, 22 Apr 2015 22:03:04 -0400 Subject: [PATCH] Move yasnippet and hippie-exp to auto-completion layer --- contrib/auto-completion/README.md | 5 ++ contrib/auto-completion/packages.el | 89 ++++++++++++++++++++++++++++- spacemacs/packages.el | 83 --------------------------- 3 files changed, 92 insertions(+), 85 deletions(-) diff --git a/contrib/auto-completion/README.md b/contrib/auto-completion/README.md index 11e9cc2aa..02678c26b 100644 --- a/contrib/auto-completion/README.md +++ b/contrib/auto-completion/README.md @@ -25,6 +25,10 @@ The following completion engines are supported: - [company][] - [auto-complete][] +Snippets are supported via [yasnippet][]. + +This layer also configures `hippie-expand`. + ## Install To use this configuration layer add it to your `~/.spacemacs` @@ -136,3 +140,4 @@ In `packages.el`: [company]: http://company-mode.github.io/ [auto-complete]: http://auto-complete.org/ +[yasnippet]: https://github.com/capitaomorte/yasnippet diff --git a/contrib/auto-completion/packages.el b/contrib/auto-completion/packages.el index ab2c36a99..2b6198ffb 100644 --- a/contrib/auto-completion/packages.el +++ b/contrib/auto-completion/packages.el @@ -12,9 +12,12 @@ (setq auto-completion-packages '( - company - ac-ispell auto-complete + ac-ispell + company + helm-c-yasnippet + hippie-exp + yasnippet )) ;; company-quickhelp from MELPA is not compatible with 24.3 anymore @@ -118,3 +121,85 @@ (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) + (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 + (defun spacemacs/load-yasnippet () + (if (not (boundp 'yas-minor-mode)) + (progn + (let* ((dir (configuration-layer/get-layer-property 'spacemacs :ext-dir)) + (private-yas-dir (concat configuration-layer-private-directory "snippets")) + (yas-dir (concat dir "yasnippet-snippets"))) + (setq yas-snippet-dirs + (append (when (boundp 'yas-snippet-dirs) + yas-snippet-dirs) + (list private-yas-dir yas-dir))) + (setq yas-wrap-around-region t) + (yas-global-mode 1))))) + (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")))) diff --git a/spacemacs/packages.el b/spacemacs/packages.el index c7eeb33d7..d61d9a9ff 100644 --- a/spacemacs/packages.el +++ b/spacemacs/packages.el @@ -60,7 +60,6 @@ guide-key-tip helm helm-ag - helm-c-yasnippet helm-descbinds helm-flyspell helm-make @@ -73,7 +72,6 @@ highlight-indentation highlight-numbers highlight-parentheses - hippie-exp hl-anything hungry-delete ido-vertical-mode @@ -105,7 +103,6 @@ whitespace window-numbering winner - yasnippet zenburn-theme )) @@ -1544,20 +1541,6 @@ ARG non nil means that the editing style is `vim'." :config (evil-define-key 'normal helm-ag-map "SPC" evil-leader--default-map))) -(defun spacemacs/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 spacemacs/init-helm-descbinds () (use-package helm-descbinds :defer t @@ -1722,34 +1705,6 @@ If ARG is non nil then `ag' and `pt' and ignored." :config (set-face-attribute 'hl-paren-face nil :weight 'ultra-bold))) -(defun spacemacs/init-hippie-exp () - (global-set-key (kbd "M-/") 'hippie-expand) ;; replace dabbrev-expand - (setq hippie-expand-try-functions-list - '( - ;; Try to expand yasnippet snippets based on prefix - yas-hippie-try-expand - ;; 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))) - (defun spacemacs/init-hl-anything () (use-package hl-anything :defer t @@ -2806,44 +2761,6 @@ It is a string holding: (append winner-boring-buffers spacemacs/winner-boring-buffers)) (winner-mode t)))) -(defun spacemacs/init-yasnippet () - (use-package yasnippet - :commands yas-global-mode - :init - (progn - (defun spacemacs/load-yasnippet () - (if (not (boundp 'yas-minor-mode)) - (progn - (let* ((dir (configuration-layer/get-layer-property 'spacemacs :ext-dir)) - (private-yas-dir (concat configuration-layer-private-directory "snippets")) - (yas-dir (concat dir "yasnippet-snippets"))) - (setq yas-snippet-dirs - (append (when (boundp 'yas-snippet-dirs) - yas-snippet-dirs) - (list private-yas-dir yas-dir))) - (setq yas-wrap-around-region t) - (yas-global-mode 1))))) - (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")))) - (defun spacemacs/init-zenburn-theme () (use-package zenburn-theme :defer t))