Polish company-dictionary source + company settings

This commit is contained in:
Henrik Lissner 2015-05-13 19:27:48 -04:00
parent 169bf8da0a
commit e836268e4c

View file

@ -2,18 +2,15 @@
:config :config
(progn (progn
(global-company-mode 1) (global-company-mode 1)
(setq company-idle-delay nil
(setq company-idle-delay nil) company-minimum-prefix-length 1
(setq company-minimum-prefix-length 1) company-show-numbers nil
(setq company-show-numbers nil) company-tooltip-limit 20
(setq company-tooltip-limit 20) company-dabbrev-downcase nil
company-dabbrev-ignore-case nil
(setq company-dabbrev-downcase nil) company-tooltip-align-annotations t
(setq company-dabbrev-ignore-case nil) company-require-match 'never
(setq company-tooltip-align-annotations t) company-global-modes
(setq company-require-match 'never)
(setq company-global-modes
'(not eshell-mode comint-mode org-mode erc-mode message-mode help-mode)) '(not eshell-mode comint-mode org-mode erc-mode message-mode help-mode))
(require 'color) (require 'color)
@ -29,7 +26,11 @@
;; Sort candidates by ;; Sort candidates by
(add-to-list 'company-transformers 'company-sort-by-occurrence) (add-to-list 'company-transformers 'company-sort-by-occurrence)
;; (add-to-list 'company-transformers 'company-sort-by-backend-importance) ;; (add-to-list 'company-transformers 'company-sort-by-backend-importance)
(use-package company-statistics :config (company-statistics-mode)) (use-package company-statistics
:config
(progn
(setq company-statistics-file (expand-file-name "company-statistics-cache.el" my-tmp-dir))
(company-statistics-mode)))
(progn ; frontends (progn ; frontends
(setq-default company-frontends '(company-pseudo-tooltip-unless-just-one-frontend (setq-default company-frontends '(company-pseudo-tooltip-unless-just-one-frontend
@ -43,7 +44,7 @@
(add-hook hook (add-hook hook
`(lambda() `(lambda()
(set (make-local-variable 'company-backends) (set (make-local-variable 'company-backends)
(append '((,@backends company-dictionary)) company-backends))))) (append '((,@backends company-semantic)) company-backends)))))
(company--backend-on 'nxml-mode-hook 'company-nxml 'company-yasnippet) (company--backend-on 'nxml-mode-hook 'company-nxml 'company-yasnippet)
(company--backend-on 'emacs-lisp-mode-hook 'company-elisp 'company-yasnippet) (company--backend-on 'emacs-lisp-mode-hook 'company-elisp 'company-yasnippet)
@ -51,13 +52,11 @@
;; 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)
(setq company-dabbrev-code-buffers nil) (setq company-dabbrev-code-buffers nil)
(setq evil-complete-next-func (setq evil-complete-next-func
(lambda(arg) (lambda(arg)
(call-interactively 'company-dabbrev) (call-interactively 'company-dabbrev)
(if (eq company-candidates-length 1) (if (eq company-candidates-length 1)
(company-complete)))) (company-complete))))
(setq evil-complete-previous-func (setq evil-complete-previous-func
(lambda (arg) (lambda (arg)
(let ((company-selection-wrap-around t)) (let ((company-selection-wrap-around t))
@ -69,24 +68,31 @@
;; Simulates ac-source-dictionary (without global dictionary) ;; Simulates ac-source-dictionary (without global dictionary)
(defconst my-dicts-dir (concat my-dir "dict/")) (defconst my-dicts-dir (concat my-dir "dict/"))
(defvar company-dictionary-alist '()) (defvar company-dictionary-alist '())
(defvar company-dictionary-major-minor-modes '())
(defun company-dictionary-active-minor-modes ()
(-filter (lambda (mode) (symbol-value mode)) company-dictionary-major-minor-modes))
(defun company-dictionary-assemble ()
(let ((minor-modes (company-dictionary-active-minor-modes))
(dicts (cdr (assq major-mode company-dictionary-alist))))
(dolist (mode minor-modes)
(setq dicts (append dicts (cdr (assq mode company-dictionary-alist)))))
dicts))
(defun company-dictionary-init ()
(dolist (file (f-files my-dicts-dir))
(add-to-list 'company-dictionary-alist `(,(intern (f-base file)) ,@(s-split "\n" (f-read file) t)))))
(defun company-dictionary (command &optional arg &rest ignored) (defun company-dictionary (command &optional arg &rest ignored)
"`company-mode' back-end for programming language keywords." "`company-mode' back-end for user-provided dictionaries."
(interactive (list 'interactive)) (interactive (list 'interactive))
(unless company-dictionary-alist (unless company-dictionary-alist (company-dictionary-init))
(dolist (file (f-files my-dicts-dir)) (let ((dict (company-dictionary-assemble)))
(add-to-list 'company-dictionary-alist `(,(intern (f-base file)) ,@(s-split "\n" (f-read file) t))))) (cl-case command
(cl-case command (interactive (company-begin-backend 'company-dictionary))
(interactive (company-begin-backend 'company-dictionary)) (prefix (and dict (or (company-grab-symbol) 'stop)))
(prefix (and (assq major-mode company-dictionary-alist) (candidates
(or (company-grab-symbol) 'stop))) (let ((completion-ignore-case nil)
(candidates (symbols dict))
(let ((completion-ignore-case nil) (all-completions arg symbols)))
(symbols (cdr (assq major-mode company-dictionary-alist)))) (sorted t))))
(all-completions arg (if (consp symbols)
symbols
(cdr (assq symbols company-dictionary-alist))))))
(sorted t)))
(progn ; keybinds (progn ; keybinds
(bind 'insert company-mode-map (bind 'insert company-mode-map