summary refs log tree commit diff
path: root/emacs.d/modules/module-ivy.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.d/modules/module-ivy.el')
-rw-r--r--emacs.d/modules/module-ivy.el54
1 files changed, 54 insertions, 0 deletions
diff --git a/emacs.d/modules/module-ivy.el b/emacs.d/modules/module-ivy.el
new file mode 100644
index 0000000..438563d
--- /dev/null
+++ b/emacs.d/modules/module-ivy.el
@@ -0,0 +1,54 @@
+(require 'config-package)
+
+(use-package swiper)
+
+(use-package counsel
+  :bind*
+  (("M-x"     . counsel-M-x)
+   ("C-s"     . counsel-grep-or-swiper)
+   ("C-x C-f" . counsel-find-file)
+   ("C-x C-r" . counsel-recentf)
+   ("C-c f"   . counsel-git)
+   ("C-c s"   . counsel-git-grep)
+   ("C-c /"   . counsel-ag))
+
+  :config
+  (setq counsel-find-file-at-point t))
+
+(use-package ivy
+  :diminish (ivy-mode . "")
+
+  :bind ("C-c m" . ivy-switch-project)
+
+  :config
+  (ivy-mode 1)
+  (setq ivy-use-virtual-buffers t
+        ivy-height 10
+        ivy-count-format "(%d/%d) "
+        ivy-initial-inputs-alist nil
+        ivy-use-ignore-default 'always
+        ivy-ignore-buffers '("company-statistics-cache.el" "company-statistics-autoload.el")
+        ivy-re-builders-alist '((swiper . ivy--regex-ignore-order)
+                                (t      . ivy--regex-fuzzy)
+                                (t      . ivy--regex-ignore-order)))
+
+  (defun ivy-switch-project ()
+    (interactive)
+    (ivy-read
+     "Switch to project: "
+     (if (projectile-project-p)
+         (cons (abbreviate-file-name (projectile-project-root))
+               (projectile-relevant-known-projects))
+       projectile-known-projects)
+     :action #'projectile-switch-project-by-name))
+
+  (ivy-set-actions
+   'ivy-switch-project
+   '(("d" dired "Open Dired in project's directory")
+     ("v" counsel-projectile "Open project root in vc-dir or magit")
+     ("c" projectile-compile-project "Compile project")
+     ("r" projectile-remove-known-project "Remove project(s)"))))
+
+(use-package counsel-projectile)
+
+(provide 'module-ivy)