]> code.delx.au - gnu-emacs-elpa/commitdiff
Continue started completions immediately.
authorNikolaj Schumacher <git@nschum.de>
Wed, 11 Mar 2009 10:10:25 +0000 (11:10 +0100)
committerNikolaj Schumacher <git@nschum.de>
Mon, 16 Mar 2009 17:04:34 +0000 (18:04 +0100)
company.el

index 4ccb7f5d33a2b4e206d061336ae2cef5316edb72..c3842ac2d943d741cbee103ad05eefa9995d823c 100644 (file)
   ;; Return non-nil if active.
   company-candidates)
 
-(defun company-begin ()
+(defun company-continue-or-cancel ()
   (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))
-        (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)))
-      (company-cancel))))
+    (let ((old-point (- company-point (length company-prefix)))
+          (company-idle-delay t)
+          (company-minimum-prefix-length 0))
+      ;; TODO: Make more efficient.
+      (setq company-candidates nil)
+      (company-begin)
+      (unless (and company-candidates
+                   (equal old-point (- company-point (length company-prefix))))
+        (company-cancel))
+      company-candidates)))
+
+(defun company-begin ()
+  (or (company-continue-or-cancel)
+      (let ((completion-ignore-case nil) ;; TODO: make this optional
+            prefix)
+        (dolist (backend company-backends)
+          (when (setq prefix (funcall backend 'prefix))
+            (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)))
+          (company-cancel)))))
 
 (defun company-cancel ()
   (setq company-backend nil