aboutsummaryrefslogtreecommitdiffstats
path: root/oni-company.el
diff options
context:
space:
mode:
authorGravatar Tom Willemse2019-02-06 00:04:41 -0800
committerGravatar Tom Willemse2019-02-06 00:27:25 -0800
commit4ca39f722f3ea7fd6c00895b70024244fc96040b (patch)
treebc910561acee71867b8dd2bbc899628c645733e3 /oni-company.el
parent81965b90d12e7cee631d7f009b7d27eb5f5f290d (diff)
downloademacs-config-4ca39f722f3ea7fd6c00895b70024244fc96040b.tar.gz
emacs-config-4ca39f722f3ea7fd6c00895b70024244fc96040b.zip
Add Company configuration
Diffstat (limited to 'oni-company.el')
-rw-r--r--oni-company.el78
1 files changed, 78 insertions, 0 deletions
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 <tom@ryuslash.org>
+;; 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 <https://www.gnu.org/licenses/>.
+
+;;; 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