]> code.delx.au - gnu-emacs-elpa/blobdiff - company-bbdb.el
New transformer: company-sort-prefer-same-case-prefix
[gnu-emacs-elpa] / company-bbdb.el
index 22741a2051664a3c01c48b2238de652aa2c802fe..872e1fcf05dc43ecd53601332d0efe94f8fcfe6e 100644 (file)
@@ -1,6 +1,6 @@
-;;; company-bbdb.el --- company-mode completion back-end for BBDB in message-mode
+;;; company-bbdb.el --- company-mode completion backend for BBDB in message-mode
 
-;; Copyright (C) 2013-2014  Free Software Foundation, Inc.
+;; Copyright (C) 2013-2014, 2016  Free Software Foundation, Inc.
 
 ;; Author: Jan Tatarik <jan.tatarik@gmail.com>
 
 (declare-function bbdb-dwim-mail "bbdb-com")
 (declare-function bbdb-search "bbdb-com")
 
+(defgroup company-bbdb nil
+  "Completion backend for BBDB."
+  :group 'company)
+
+(defcustom company-bbdb-modes '(message-mode)
+  "Major modes in which `company-bbdb' may complete."
+  :type '(repeat (symbol :tag "Major mode"))
+  :package-version '(company . "0.8.8"))
+
 (defun company-bbdb--candidates (arg)
   (cl-mapcan (lambda (record)
                (mapcar (lambda (mail) (bbdb-dwim-mail record mail))
 
 ;;;###autoload
 (defun company-bbdb (command &optional arg &rest ignore)
-  "`company-mode' completion back-end for `bbdb'."
+  "`company-mode' completion backend for BBDB."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-bbdb))
-    (prefix (and (eq major-mode 'message-mode)
+    (prefix (and (memq major-mode company-bbdb-modes)
                  (featurep 'bbdb-com)
-                 (looking-back "^\\(To\\|Cc\\|Bcc\\):.*"
+                 (looking-back "^\\(To\\|Cc\\|Bcc\\): *.*? *\\([^,;]*\\)"
                                (line-beginning-position))
-                 (company-grab-symbol)))
+                 (match-string-no-properties 2)))
     (candidates (company-bbdb--candidates arg))
     (sorted t)
     (no-cache t)))