diff --git a/emacs/.emacs.d/init/oni-company-init.el b/emacs/.emacs.d/init/oni-company-init.el new file mode 100644 index 0000000..8b8317e --- /dev/null +++ b/emacs/.emacs.d/init/oni-company-init.el @@ -0,0 +1,71 @@ +;;; oni-company-init.el --- Company configuration -*- lexical-binding: t; -*- + +;; Copyright (C) 2018 Tom Willemse + +;; Author: Tom Willemse +;; Keywords: local + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; My configuration for `company-mode'. + +;;; Code: + +(require 'company) +(require 'diminish) +(require 'fill-column-indicator) + +(defvar-local oni-company-init--fci-used nil + "Buffer-local indicator used to remember the state of `fci-mode'. +When `oni-company-init--hide-fill-column-indicator' actually +hides the fill column indicator this variable will be set to t. +`oni-company-init--show-fill-column-indicator' will only actually +show the fill column indicator if this variable is t.") + +(defun oni-company-init--hide-fill-column-indicator (_) + "Hide the fill column indicator if `fci-mode' is on." + (when fci-mode + (setq oni-company-init--fci-used t) + (turn-off-fci-mode))) + +(defun oni-company-init--show-fill-column-indicator (_) + "Show the fill column indicator if `oni-company-init--fci-used' is t." + (when oni-company-init--fci-used + (setq oni-company-init--fci-used nil) + (turn-on-fci-mode))) + +(diminish 'company-mode) + +(setq company-frontends + '(company-pseudo-tooltip-unless-just-one-frontend + company-echo-metadata-frontend + company-preview-frontend)) + +;; Turn the fill column indicator off when the company mode pop-up +;; appears. +(add-hook 'company-completion-started-hook 'oni-company-init--hide-fill-column-indicator) + +;; Turn the fill column indicator on when the company-mode pop-up +;; disappears (either because it is finished or because it was +;; cancelled). +(add-hook 'company-completion-finished-hook 'oni-company-init--show-fill-column-indicator) +(add-hook 'company-completion-cancelled-hook 'oni-company-init--show-fill-column-indicator) + +(add-to-list 'company-backends 'company-tern) +(add-to-list 'company-backends 'company-jedi) + +(provide 'oni-company-init) +;;; oni-company-init.el ends here