]> code.delx.au - gnu-emacs-elpa/commitdiff
Added required prefix length.
authorNikolaj Schumacher <git@nschum.de>
Tue, 10 Mar 2009 22:09:26 +0000 (23:09 +0100)
committerNikolaj Schumacher <git@nschum.de>
Mon, 16 Mar 2009 17:04:34 +0000 (18:04 +0100)
company.el

index 4c58785278e42a49e80df8751084f37c675cd70e..49ffe436aed3ad82934f607f7727ac28c6e72834 100644 (file)
   :group 'company
   :type '(repeat (function :tag "function" nil)))
 
+(defcustom company-minimum-prefix-length 3
+  "*"
+  :group 'company
+  :type '(integer :tag "prefix length"))
+
 ;;; mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defvar company-mode-map
   (let ((offset (- company-selection display-limit -1)))
     (max offset 0)))
 
+(defsubst company-should-complete (prefix)
+  (>= (length prefix) company-minimum-prefix-length))
+
 (defun company-begin ()
+  (when company-candidates
+    (company-cancel))
   (let ((completion-ignore-case nil) ;; TODO: make this optional
         prefix)
     (dolist (backend company-backends)
       (when (setq prefix (funcall backend 'prefix))
-        (setq company-backend backend
-              company-prefix prefix
-              company-candidates
-              (funcall company-backend 'candidates prefix)
-              company-common (try-completion prefix company-candidates)
-              company-selection 0
-              company-point (point))
+        (when (company-should-complete prefix)
+          (setq company-backend backend
+                company-prefix prefix
+                company-candidates
+                (funcall company-backend 'candidates prefix)
+                company-common (try-completion prefix company-candidates)
+                company-selection 0
+                company-point (point)))
         (return prefix)))
     (unless (and company-candidates
                  (not (eq t company-common)))