X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/aa4ec37a77ab65da8058160cfbf83433cab94e04..4a6eea94edb138a3ea73e7a50553b69dedc5c3ad:/company-ispell.el diff --git a/company-ispell.el b/company-ispell.el index ba54ce145..91f43df9b 100644 --- a/company-ispell.el +++ b/company-ispell.el @@ -1,30 +1,41 @@ -;;; company-ispell.el --- a company-mode completion back-end using ispell -;; -;; Copyright (C) 2009 Nikolaj Schumacher -;; -;; This file is part of company 0.4.2. -;; -;; 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 2 -;; of the License, or (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, +;;; company-ispell.el --- company-mode completion backend using Ispell + +;; Copyright (C) 2009-2011, 2013-2015 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 this program. If not, see . +;; along with GNU Emacs. If not, see . + + +;;; Commentary: +;; + +;;; Code: (require 'company) +(require 'cl-lib) (require 'ispell) -(eval-when-compile (require 'cl)) + +(defgroup company-ispell nil + "Completion backend using Ispell." + :group 'company) (defcustom company-ispell-dictionary nil - "*Dictionary to use for `company-ispell'. + "Dictionary to use for `company-ispell'. If nil, use `ispell-complete-word-dict'." - :group 'company :type '(choice (const :tag "default (nil)" nil) (file :tag "dictionary" t))) @@ -43,16 +54,23 @@ If nil, use `ispell-complete-word-dict'." ;;;###autoload (defun company-ispell (command &optional arg &rest ignored) - "A `company-mode' completion back-end using ispell." + "`company-mode' completion backend using Ispell." (interactive (list 'interactive)) - (case command - ('interactive (company-begin-backend 'company-ispell)) - ('prefix (when (company-ispell-available) - (company-grab-word))) - ('candidates (lookup-words arg (or company-ispell-dictionary - ispell-complete-word-dict))) - ('sorted t) - ('ignore-case t))) + (cl-case command + (interactive (company-begin-backend 'company-ispell)) + (prefix (when (company-ispell-available) + (company-grab-word))) + (candidates + (let ((words (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