Refactor company integration

This commit is contained in:
Henrik Lissner 2015-10-14 03:39:32 -04:00
parent c7f2f10b18
commit d073d61531
14 changed files with 45 additions and 27 deletions

View file

@ -23,19 +23,24 @@
company-frontends '(company-pseudo-tooltip-unless-just-one-frontend
company-echo-metadata-frontend
company-preview-if-just-one-frontend)
company-backends '((company-capf
company-yasnippet
company-dabbrev-code
company-files
company-keywords)
company-dabbrev)
company-dict-dir (concat narf-private-dir "dict/"))
:config
;; (use-package company-dict :defer t)
;; (setq-default company-backends (append '(company-dict company-keywords) company-backends))
(add-to-list 'company-transformers 'company-sort-by-occurrence)
(setq-default company-backends (append '(company-keywords) company-backends))
;; TODO: Investigate yasnippet
(after! yasnippet
(setq-default company-backends (append '(company-capf company-yasnippet) company-backends)))
(add-to-list 'company-transformers 'company-sort-by-occurrence)
(add-company-backend! nxml-mode (nxml yasnippet))
(add-company-backend! emacs-lisp-mode (elisp yasnippet))
(define-company-backend! nxml-mode (nxml yasnippet))
(define-company-backend! emacs-lisp-mode (elisp yasnippet))
;; (use-package company-dict :defer t)
;; (setq-default company-backends (append '(company-dict company-keywords) company-backends))
;; Rewrite evil-complete to use company-dabbrev
(setq company-dabbrev-code-other-buffers t
@ -51,6 +56,5 @@
(global-company-mode +1))
(provide 'core-company)
;;; core-company.el ends here

View file

@ -14,5 +14,18 @@
(company-complete)
(call-interactively 'company-select-previous))))
;;;###autoload
(defun narf/company-complete-common-or-complete-full ()
(interactive)
(when (company-manual-begin)
(if (eq last-command #'company-complete-common-or-cycle)
(let ((company-selection-wrap-around t))
(call-interactively #'company-complete-selection))
(let ((buffer-mod-tick (buffer-chars-modified-tick)))
(call-interactively #'company-complete-common)
(when (= buffer-mod-tick (buffer-chars-modified-tick))
(call-interactively #'company-complete-selection)
(call-interactively #'company-complete))))))
(provide 'defuns-company)
;;; defuns-company.el ends here

View file

@ -2,7 +2,7 @@
;; for ../core-company.el
;;;###autoload
(defmacro add-company-backend! (hook backends)
(defmacro define-company-backend! (hook backends)
"Register a company backend for a mode."
(let ((def-name (intern (format "narf--init-company-%s" hook)))
(quoted (eq (car-safe backends) 'quote)))

View file

@ -5,7 +5,7 @@
:config
(after! company
(require 'company-cmake)
(add-company-backend! cmake-mode (cmake yasnippet))))
(define-company-backend! cmake-mode (cmake yasnippet))))
(use-package glsl-mode
:mode ("\\.glsl\\'" "\\.vert\\'" "\\.frag\\'" "\\.geom\\'"))
@ -36,9 +36,9 @@
(after! company
;; TODO Clang is *really* slow in larger projects, maybe replace it with
;; irony-mode or ycmd?
(add-company-backend! c-mode (c-headers clang))
(add-company-backend! c++-mode (c-headers clang))
(add-company-backend! objc-mode (c-headers xcode)))
(define-company-backend! c-mode (c-headers clang))
(define-company-backend! c++-mode (c-headers clang))
(define-company-backend! objc-mode (c-headers xcode)))
(add-hook! c++-mode 'narf|init-c++-C11-highlights)
(add-hook! c++-mode (setq flycheck-clang-language-standard "c++11"

View file

@ -26,7 +26,7 @@
:n "ta" (λ (omnisharp-unit-test "all"))))
(after! company
(add-company-backend! csharp-mode (omnisharp))
(define-company-backend! csharp-mode (omnisharp))
(add-hook! csharp-mode 'turn-on-eldoc-mode))
(mapc (lambda (x)

View file

@ -34,7 +34,7 @@
(use-package company-go
:config
(add-company-backend! go-mode (go yasnippet))))
(define-company-backend! go-mode (go yasnippet))))
(provide 'module-go)
;;; module-go.el ends here

View file

@ -76,7 +76,7 @@
:config
(after! company
(require 'company-tern)
(add-company-backend! js2-mode (tern))))
(define-company-backend! js2-mode (tern))))
(use-package unityjs-mode
:mode "/Assets/.*\\.js$"

View file

@ -8,7 +8,7 @@
php-extras-eldoc-functions-file (concat narf-temp-dir "php-extras-eldoc-functions"))
:config
(require 'php-extras)
(add-company-backend! php-mode '(php-extras-company))
(define-company-backend! php-mode '(php-extras-company))
;; TODO Tie into emr
(require 'php-refactor-mode)

View file

@ -41,7 +41,7 @@
(after! company
(require 'company-anaconda)
(add-company-backend! python-mode (anaconda)))
(define-company-backend! python-mode (anaconda)))
(after! emr
(mapc (lambda (x)

View file

@ -61,7 +61,7 @@
(evil-set-initial-state 'inf-ruby-mode 'insert)
(after! company
(require 'company-inf-ruby)
(add-company-backend! inf-ruby-mode (inf-ruby))))
(define-company-backend! inf-ruby-mode (inf-ruby))))
(use-package robe
:commands (robe-mode robe-start ruby-load-file)
@ -71,7 +71,7 @@
:config
(after! company
(require 'company-robe)
(add-company-backend! ruby-mode (robe))))
(define-company-backend! ruby-mode (robe))))
(use-package ruby-refactor
:after emr

View file

@ -17,13 +17,14 @@
:config (add-hook! rust-mode 'flycheck-mode))
(use-package racer
:if (! (file-exists-p "/usr/local/bin/racer"))
:config
(bind! :m "gd" 'racer-find-definition)
(setq racer-cmd "/usr/local/bin/racer"
racer-rust-src-path "~/Dropbox/lib/rust/src/")
(bind! :m "gd" 'racer-find-definition)
(add-hook! rust-mode '(racer-mode eldoc-mode flycheck-rust-setup))
(add-company-backend! rust-mode (racer))))
(define-company-backend! rust-mode (racer))))
(provide 'module-rust)
;;; module-rust.el ends here

View file

@ -4,7 +4,7 @@
:mode "\\.swift$"
:config
(after! flycheck (add-to-list 'flycheck-checkers 'swift))
(after! company (add-company-backend! swift-mode (xcode))))
(after! company (define-company-backend! swift-mode (xcode))))
;; TODO Set up emacs task runners for fruitstrap

View file

@ -5,7 +5,7 @@
(use-package sass-mode
:mode "\\.sass$"
:config
(after! company (add-company-backend! sass-mode (css))))
(after! company (define-company-backend! sass-mode (css))))
(use-package scss-mode
:mode "\\.scss$"
@ -29,7 +29,7 @@
:modes 'scss-mode
:predicate (lambda () (not (use-region-p)))))
(after! company (add-company-backend! scss-mode (css))))
(after! company (define-company-backend! scss-mode (css))))
(use-package web-beautify
:commands (web-beautify-js web-beautify-css web-beautify-html)

View file

@ -256,8 +256,8 @@
"C-S-h" 'company-show-location
"C-S-s" 'company-search-candidates
"C-s" 'company-filter-candidates
"C-SPC" 'company-complete-common
[tab] 'company-complete
"C-SPC" 'company-complete-common-or-cycle
[tab] 'narf/company-complete-common-or-complete-full
"<backtab>" 'company-select-previous
[escape] 'company-abort
"<C-return>" 'helm-company)