Move dired, eshell, ibuffer, ido, and ivy to separate files in lisp/
[~bandali/configs] / lisp / bandali-ivy.el
diff --git a/lisp/bandali-ivy.el b/lisp/bandali-ivy.el
new file mode 100644 (file)
index 0000000..763168b
--- /dev/null
@@ -0,0 +1,54 @@
+(use-package ivy
+  :defer 0.3
+  :bind
+  (:map ivy-minibuffer-map
+   ([escape] . keyboard-escape-quit)
+   ([S-up]   . ivy-previous-history-element)
+   ([S-down] . ivy-next-history-element)
+   ("DEL"    . ivy-backward-delete-char))
+  :config
+  (setq ivy-wrap t
+        ;; ivy-height 14
+        ivy-use-virtual-buffers t
+        ivy-virtual-abbreviate 'abbreviate
+        ivy-count-format "%d/%d ")
+
+  (defvar b/ivy-ignore-buffer-modes '(magit-mode erc-mode dired-mode))
+  (defun b/ivy-ignore-buffer-p (str)
+    "Return non-nil if str names a buffer with a major mode
+derived from one of `b/ivy-ignore-buffer-modes'.
+
+This function is intended for use with `ivy-ignore-buffers'."
+    (let* ((buf (get-buffer str))
+           (mode (and buf (buffer-local-value 'major-mode buf))))
+      (and mode
+           (apply #'provided-mode-derived-p mode b/ivy-ignore-buffer-modes))))
+  (add-to-list 'ivy-ignore-buffers 'b/ivy-ignore-buffer-p)
+
+  (ivy-mode 1)
+  :custom-face
+  (ivy-minibuffer-match-face-1 ((t (:background "#eeeeee"))))
+  (ivy-minibuffer-match-face-2 ((t (:background "#e7e7e7" :weight bold))))
+  (ivy-minibuffer-match-face-3 ((t (:background "light goldenrod" :weight semi-bold))))
+  (ivy-minibuffer-match-face-4 ((t (:background "misty rose" :weight semi-bold))))
+  (ivy-current-match ((((class color) (background light))
+                       :background "#d7d7d7" :foreground "black")
+                      (((class color) (background dark))
+                       :background "#65a7e2" :foreground "black"))))
+
+(use-package swiper
+  :demand
+  :after ivy
+  :bind (("C-S-s" . swiper-isearch)))
+
+(use-package counsel
+  :demand
+  :after ivy
+  :bind (("C-c f r" . counsel-recentf)
+         :map minibuffer-local-map
+         ("C-r" . counsel-minibuffer-history))
+  :config
+  (counsel-mode 1)
+  (defalias 'locate #'counsel-locate))
+
+(provide 'bandali-ivy)