## Next
+* Starting with Emacs version 24.4, `company-capf` is included in
+ `company-backends` and replaces `company-elisp`.
* `company-capf` supports completion tables that return non-default boundaries.
* `company-elisp` is enabled in `inferior-emacs-lisp-mode`.
;;; Code:
+(eval-when-compile (require 'cl))
+
(defun company--capf-data ()
- (let ((data (run-hook-wrapped 'completion-at-point-functions
- ;; Ignore misbehaving functions.
- #'completion--capf-wrapper 'optimist)))
+ ;; Ignore tags-completion-at-point-function because it subverts company-etags
+ ;; in the default value of company-backends, where the latter comes later.
+ (letf* (((default-value 'completion-at-point-functions) nil)
+ (data (run-hook-wrapped 'completion-at-point-functions
+ ;; Ignore misbehaving functions.
+ #'completion--capf-wrapper 'optimist)))
(when (consp data) data)))
(defun company-capf (command &optional arg &rest _args)
(assq backend company-safe-backends))
(return t))))))
-(defcustom company-backends '(company-elisp company-nxml company-css
+(defvar company--include-capf (version< "24.3.50" emacs-version))
+
+(defcustom company-backends `(,@(unless company--include-capf
+ (list 'company-elisp))
+ company-nxml company-css
company-eclim company-semantic company-clang
company-xcode company-ropemacs company-cmake
+ ,@(when company--include-capf
+ (list 'company-capf))
(company-gtags company-etags company-dabbrev-code
company-keywords)
company-oddmuse company-files company-dabbrev)