   :bind (("M-x" . counsel-M-x)
          ("C-h b" . counsel-descbinds)
          ("C-x C-f" . counsel-find-file)
-         ("C-c j" . counsel-git-grep)))
+         ("C-s" . counsel-grep-or-swiper)
+         ("C-c j" . counsel-git-grep)
+         ("C-c s g" . rgrep)
+         ("C-c s r" . counsel-rg)
+         ("C-c s s" . counsel-ag)
+         ("C-c s z" . zrgrep)))
+
+(use-package counsel-projectile
+  :init (counsel-projectile-mode))
 
 ;; (use-package dante
 ;;   :init  (progn

  :defer t
  :init (ddb/add-shell-extension "zsh"))

(use-package swiper
  :bind ("C-s" . swiper))

(use-package whitespace
  :bind ("C-c w" . whitespace-mode))


          (unless (locate-library "dante")
            (add-hook 'haskell-mode-hook 'interactive-haskell-mode))))

(defvar ddb/hs-state nil
  "Current state of hideshow ddb/hs-toggle-all.")

  ;;;###autoload
(defun ddb/hs-toggle-all ()
  "Toggle hideshow all."
    (interactive)
    (setq ddb/hs-state (not ddb/hs-state))
    (if ddb/hs-state
        (hs-hide-all)
      (hs-show-all)))

(use-package hideshow
  :commands hs-minor-mode
  :init (add-hook 'emacs-lisp-mode-hook #'hs-minor-mode)
  ;; could be bound specifically for the emacs-lisp mode map
  :bind ("<C-tab>" . ddb/hs-toggle-all))

(use-package hydra)

