You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
;;; company-ispell.el --- company-mode completion backend using Ispell
;; Copyright (C) 2009-2011, 2013-2016 Free Software Foundation, Inc.
;; Author: Nikolaj Schumacher
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:;;
;;; Code:
(require 'company)(require 'cl-lib)(require 'ispell)
(defgroup company-ispell nil "Completion backend using Ispell." :group 'company)
(defcustom company-ispell-dictionary nil "Dictionary to use for `company-ispell'.
If nil, use `ispell-complete-word-dict'."
:type '(choice (const :tag "default (nil)" nil) (file :tag "dictionary" t)))
(defvar company-ispell-available 'unknown)
(defalias 'company-ispell--lookup-words (if (fboundp 'ispell-lookup-words) 'ispell-lookup-words 'lookup-words))
(defun company-ispell-available () (when (eq company-ispell-available 'unknown) (condition-case err (progn (company-ispell--lookup-words "WHATEVER") (setq company-ispell-available t)) (error (message "Company-Ispell: %s" (error-message-string err)) (setq company-ispell-available nil)))) company-ispell-available)
;;;###autoload(defun company-ispell (command &optional arg &rest ignored) "`company-mode' completion backend using Ispell." (interactive (list 'interactive)) (cl-case command (interactive (company-begin-backend 'company-ispell)) (prefix (when (company-ispell-available) (company-grab-word))) (candidates (let ((words (company-ispell--lookup-words arg (or company-ispell-dictionary ispell-complete-word-dict))) (completion-ignore-case t)) (if (string= arg "") ;; Small optimization. words ;; Work around issue #284. (all-completions arg words)))) (sorted t) (ignore-case 'keep-prefix)))
(provide 'company-ispell);;; company-ispell.el ends here
|