--- /dev/null
+;;; company-abbrev.el --- a company-mode completion back-end for abbrev
+;;
+;; Copyright (C) 2009 Nikolaj Schumacher
+;;
+;; This file is part of company 0.2.1.
+;;
+;; 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,
+;; 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 <http://www.gnu.org/licenses/>.
+
+(require 'company)
+(eval-when-compile (require 'cl))
+(require 'abbrev)
+
+(defun company-abbrev-insert (match)
+ "Replace MATCH with the expanded abbrev."
+ (expand-abbrev))
+
+;;;###autoload
+(defun company-abbrev (command &optional arg &rest ignored)
+ "A `company-mode' completion back-end for abbrev."
+ (interactive (list 'interactive))
+ (case command
+ ('interactive (company-begin-backend 'company-abbrev
+ 'company-abbrev-insert))
+ ('prefix (or (company-grab "\\_<\\(\\sw\\|\\s_\\)+\\_>") ""))
+ ('candidates (nconc
+ (delete "" (all-completions arg global-abbrev-table))
+ (delete "" (all-completions arg local-abbrev-table))))
+ ('meta (abbrev-expansion arg))
+ ('require-match t)))
+
+(provide 'company-abbrev)
+;;; company-abbrev.el ends here
;; Enable company-mode with M-x company-mode. For further information look at
;; the documentation for `company-mode' (C-h f company-mode RET)
;;
+;; If you want to start a specific back-end, call it interactively or use
+;; `company-begin-backend'. For example:
+;; M-x company-abbrev will prompt for and insert an abbrev.
+;;
;; To write your own back-end, look at the documentation for `company-backends'.
;; Here is a simple example completing "foo":
;;
;;
;;; Change Log:
;;
+;; Added abbrev back-end.
;; Back-ends are now interactive. You can start them with M-x backend-name.
;; Added `company-begin-with' for starting company from elisp-code.
;; Added hooks.