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

View file

@ -14,5 +14,18 @@
(company-complete) (company-complete)
(call-interactively 'company-select-previous)))) (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) (provide 'defuns-company)
;;; defuns-company.el ends here ;;; defuns-company.el ends here

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -4,7 +4,7 @@
:mode "\\.swift$" :mode "\\.swift$"
:config :config
(after! flycheck (add-to-list 'flycheck-checkers 'swift)) (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 ;; TODO Set up emacs task runners for fruitstrap

View file

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

View file

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