summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pants.el41
1 files changed, 24 insertions, 17 deletions
diff --git a/pants.el b/pants.el
index 151b45f..b11478c 100644
--- a/pants.el
+++ b/pants.el
@@ -138,23 +138,30 @@
       (while (re-search-forward "^\\(.+\\)$" nil t)
         (setq target (match-string 1))
         (push target targets)))
-    (cond
-     ((eq pants-completion-system 'ivy)
-      (if (fboundp 'ivy-read)
-          (ivy-read "Pants Targets" targets
-                    :action (lambda (target) (funcall action target)))
-        (user-error "Please install ivy from https://github.com/abo-abo/swiper")))
-     ((eq pants-completion-system 'helm)
-      (if (fboundp 'helm)
-          (helm :sources
-                `((name . "Pants Targets")
-                  (candidates . ,targets)
-                  (action . action))
-                :buffer "*helm pants targets*"
-                :prompt "pants: ")
-        (user-error "Please install helm from https://github.com/emacs-helm/helm")))
-     ((eq pants-completion-system 'ido)
-      (ido-completing-read "Pants target: " targets)))))
+    (let (res)
+      (setq res
+            (cond
+             ((eq pants-completion-system 'ivy)
+              (if (fboundp 'ivy-read)
+                  (ivy-read "Pants Targets" targets
+                            :action (prog1 action
+                                      (setq action nil)))
+                (user-error "Please install ivy from https://github.com/abo-abo/swiper")))
+             ((eq pants-completion-system 'helm)
+              (if (fboundp 'helm)
+                  (helm :sources
+                        (helm-make-source "Pants" 'helm-source-sync
+                                          :candidates targets
+                                          :action (prog1 action
+                                                    (setq action nil))
+                                          :buffer "*helm pants targets*"
+                                          :prompt "pants: "))
+                (user-error "Please install helm from https://github.com/emacs-helm/helm")))
+             ((eq pants-completion-system 'ido)
+              (ido-completing-read "Pants target: " targets))))
+      (if action
+          (funcall action res)
+        res))))
 
 (defun pants--get-build-file-for-current-buffer ()
   "Finds the nearest build file for the current buffer"