;; Copyright (C) 2009 Nikolaj Schumacher
;;
;; Author: Nikolaj Schumacher <bugs * nschum de>
-;; Version: 0.4.2
+;; Version: 0.4.3
;; Keywords: abbrev, convenience, matchis
;; URL: http://nschum.de/src/emacs/company/
;; Compatibility: GNU Emacs 22.x, GNU Emacs 23.x
;;
;;; Change Log:
;;
+;; Added `company-clang' back-end.
+;; The semantic back-end now shows meta information for local symbols.
+;; Added compatibility for CEDET in Emacs 23.2.
+;;
+;; 2009-05-07 (0.4.3)
+;; Added `company-other-backend'.
;; Idle completion no longer interrupts multi-key command input.
;; Added `company-ropemacs' and `company-pysmell' back-ends.
;;
(add-to-list 'debug-ignored-errors "^Company not ")
(add-to-list 'debug-ignored-errors "^No candidate number ")
(add-to-list 'debug-ignored-errors "^Cannot complete at point$")
+(add-to-list 'debug-ignored-errors "^No other back-end$")
(defgroup company nil
"Extensible inline text completion mechanism"
(defvar company-safe-backends
'((company-abbrev . "Abbrev")
+ (company-clang . "clang")
(company-css . "CSS")
(company-dabbrev . "dabbrev for plain text")
(company-dabbrev-code . "dabbrev for code")
(return t))))))
(defcustom company-backends '(company-elisp company-nxml company-css
- company-eclim company-semantic company-xcode
- company-ropemacs
+ company-eclim company-semantic company-clang
+ company-xcode company-ropemacs
(company-gtags company-etags company-dabbrev-code
company-pysmell company-keywords)
company-oddmuse company-files company-dabbrev)
completions are merged. Otherwise only the first matching back-end returns
results.
+`company-begin-backend' can be used to start a specific back-end,
+`company-other-backend' will skip to the next matching back-end in the list.
+
Each back-end is a function that takes a variable number of arguments.
The first argument is the command requested from the back-end. It is one
of the following:
(if (or (symbolp backend)
(functionp backend))
- (if (ignore-errors (funcall backend 'init) t)
- (put backend 'company-init t)
- (put backend 'company-init 'failed)
- (unless (memq backend company--disabled-backends)
- (message "Company back-end '%s' could not be initialized"
- backend)
- (push backend company--disabled-backends))
- nil)
+ (condition-case err
+ (progn
+ (funcall backend 'init)
+ (put backend 'company-init t))
+ (error
+ (put backend 'company-init 'failed)
+ (unless (memq backend company--disabled-backends)
+ (message "Company back-end '%s' could not be initialized:\n%s"
+ backend (error-message-string err)))
+ (push backend company--disabled-backends)
+ nil))
(mapc 'company-init-backend backend)))
(defvar company-default-lighter " company")
(setq company--explicit-action t)
(company-auto-begin))
+(defun company-other-backend (&optional backward)
+ (interactive (list current-prefix-arg))
+ (company-assert-enabled)
+ (if company-backend
+ (let* ((after (cdr (member company-backend company-backends)))
+ (before (cdr (member company-backend (reverse company-backends))))
+ (next (if backward
+ (append before (reverse after))
+ (append after (reverse before)))))
+ (company-cancel)
+ (dolist (backend next)
+ (when (ignore-errors (company-begin-backend backend))
+ (return t))))
+ (company-manual-begin))
+ (unless company-candidates
+ (error "No other back-end")))
+
(defun company-require-match-p ()
(let ((backend-value (company-call-backend 'require-match)))
(or (eq backend-value t)
(defvar company-echo-timer nil)
-(defvar company-echo-delay .1)
+(defvar company-echo-delay .01)
(defun company-echo-show (&optional getter)
(when getter