Add an option to use tab for completion in company-mode layer.
This plays well with yasnippet
This commit is contained in:
parent
6e15255554
commit
97d6230601
|
@ -25,6 +25,18 @@ Basically, Spacemacs now has better Clang/C++ than any other Emacs config.
|
||||||
<kbd>C-M-/</kbd> | filter the company dropdown menu
|
<kbd>C-M-/</kbd> | filter the company dropdown menu
|
||||||
<kbd>C-d</kbd> | open minibuffer with documentation of thing at point in company dropdown
|
<kbd>C-d</kbd> | open minibuffer with documentation of thing at point in company dropdown
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
To use tab instead of enter to complete your selection, `dotspacemacs/init` set `company-mode/use-tab-instead-of-enter-to-complete` to true, for example:
|
||||||
|
```
|
||||||
|
(defun dotspacemacs/init ()
|
||||||
|
"User initialization for Spacemacs. This function is called at the very
|
||||||
|
startup."
|
||||||
|
(setq company-mode/use-tab-instead-of-enter-to-complete t)
|
||||||
|
)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## Maintainer
|
## Maintainer
|
||||||
|
|
||||||
This contrib layer was written by and should be maintained by @trishume, everyone else is
|
This contrib layer was written by and should be maintained by @trishume, everyone else is
|
||||||
|
|
|
@ -15,6 +15,9 @@
|
||||||
(defvar company-mode/enable-yas t
|
(defvar company-mode/enable-yas t
|
||||||
"Enable yasnippet for all backends.")
|
"Enable yasnippet for all backends.")
|
||||||
|
|
||||||
|
(defvar company-mode/use-tab-instead-of-enter-to-complete nil
|
||||||
|
"use tab instead of enter for completion in company-mode")
|
||||||
|
|
||||||
(defun company-mode/backend-with-yas (backend)
|
(defun company-mode/backend-with-yas (backend)
|
||||||
(if (or (not company-mode/enable-yas) (and (listp backend) (member 'company-yasnippet backend)))
|
(if (or (not company-mode/enable-yas) (and (listp backend) (member 'company-yasnippet backend)))
|
||||||
backend
|
backend
|
||||||
|
@ -25,15 +28,22 @@
|
||||||
(use-package company
|
(use-package company
|
||||||
:config
|
:config
|
||||||
(progn
|
(progn
|
||||||
(defun company-mode/keyword-cancel-transformer (candidates)
|
;; this isn't needed if we use tab instead of enter
|
||||||
"company frontend that cancels completion when a keyword is typed
|
(if (not company-mode/use-tab-instead-of-enter-to-complete)
|
||||||
|
(progn
|
||||||
|
(defun company-mode/keyword-cancel-transformer (candidates)
|
||||||
|
"company frontend that cancels completion when a keyword is typed
|
||||||
so that you don't have 'do' completed to 'downcase' in Ruby"
|
so that you don't have 'do' completed to 'downcase' in Ruby"
|
||||||
(if (member company-prefix company-mode/completion-cancel-keywords) '() candidates))
|
(if (member company-prefix company-mode/completion-cancel-keywords) '() candidates))
|
||||||
|
(setq
|
||||||
|
company-transformers '(company-mode/keyword-cancel-transformer company-sort-by-occurrence))
|
||||||
|
)
|
||||||
|
(setq company-transformers '(company-sort-by-occurrence)) ;else
|
||||||
|
)
|
||||||
|
|
||||||
(setq company-idle-delay 0.0
|
(setq company-idle-delay 0.0
|
||||||
company-minimum-prefix-length 2
|
company-minimum-prefix-length 2
|
||||||
company-require-match nil
|
company-require-match nil
|
||||||
company-transformers '(company-mode/keyword-cancel-transformer company-sort-by-occurrence)
|
|
||||||
company-dabbrev-ignore-case nil
|
company-dabbrev-ignore-case nil
|
||||||
company-dabbrev-downcase nil
|
company-dabbrev-downcase nil
|
||||||
company-tooltip-flip-when-above t
|
company-tooltip-flip-when-above t
|
||||||
|
@ -42,10 +52,8 @@ so that you don't have 'do' completed to 'downcase' in Ruby"
|
||||||
|
|
||||||
(global-company-mode 1)
|
(global-company-mode 1)
|
||||||
|
|
||||||
;; Fix integration of company and yasnippet
|
;; set completion key
|
||||||
(define-key company-active-map (kbd "TAB") nil)
|
(company-mode/set-completion-key)
|
||||||
(define-key company-active-map (kbd "<tab>") nil)
|
|
||||||
(define-key company-active-map [tab] nil)
|
|
||||||
|
|
||||||
(company-mode/setup-keybindings)
|
(company-mode/setup-keybindings)
|
||||||
|
|
||||||
|
@ -80,3 +88,19 @@ so that you don't have 'do' completed to 'downcase' in Ruby"
|
||||||
(define-key company-active-map (kbd "C-M-/") 'company-filter-candidates)
|
(define-key company-active-map (kbd "C-M-/") 'company-filter-candidates)
|
||||||
(define-key company-active-map (kbd "C-d") 'company-show-doc-buffer)
|
(define-key company-active-map (kbd "C-d") 'company-show-doc-buffer)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
(defun company-mode/set-completion-key ()
|
||||||
|
(if company-mode/use-tab-instead-of-enter-to-complete
|
||||||
|
(progn
|
||||||
|
(define-key company-active-map (kbd "TAB") 'company-complete-selection) ;have tab stand in for enter
|
||||||
|
(define-key company-active-map (kbd "<tab>") 'company-complete-selection)
|
||||||
|
(define-key company-active-map [tab] 'company-complete-selection)
|
||||||
|
(define-key company-active-map [return] nil) ;disable enter
|
||||||
|
(define-key company-active-map (kbd "RET") nil)
|
||||||
|
)
|
||||||
|
(progn
|
||||||
|
;; Fix integration of company and yasnippet
|
||||||
|
(define-key company-active-map (kbd "TAB") nil)
|
||||||
|
(define-key company-active-map (kbd "<tab>") nil)
|
||||||
|
(define-key company-active-map [tab] nil)
|
||||||
|
)))
|
||||||
|
|
Loading…
Reference in a new issue