diff --git a/oni-company.el b/oni-company.el new file mode 100644 index 0000000..61edd8f --- /dev/null +++ b/oni-company.el @@ -0,0 +1,78 @@ +;;; oni-company.el --- Company configuration -*- lexical-binding: t; -*- + +;; Copyright (C) 2019 Tom Willemse + +;; Author: Tom Willemse +;; Keywords: local +;; Version: 20190206002633 +;; Package-Requires: (company diminish fill-column-indicator) + +;; 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: + +;; Configuration for `company-mode'. + +;;; Code: + +(require 'company) +(require 'company-dabbrev) +(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-dabbrev-ignore-case nil) +(setq company-idle-delay 0.2) +(setq company-tooltip-align-annotations t) + +(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) + +;;;###autoload(with-eval-after-load 'company (require 'oni-company)) + +(provide 'oni-company) +;;; oni-company.el ends here