 (use-package helm-semantic :commands helm-semantic-or-imenu)
 (use-package helm-elisp    :commands helm-apropos)
 (use-package helm-command  :commands helm-M-x)
-(use-package helm-descbinds :commands helm-descbinds)
+
+(use-package helm-descbinds :commands helm-descbinds
+  :config
+  (setq helm-descbinds-window-style 'split-window)
+  (defun narf/helm-descbinds-leader ()
+    (interactive)
+    (narf-helm-descbinds "^,\\ "))
+  (defun narf/helm-descbinds-localleader ()
+    (interactive)
+    (narf-helm-descbinds "^\\\\\\ "))
+
+  (defun narf-helm-descbinds (&optional input buffer)
+    (let ((enable-recursive-minibuffers t))
+      (helm :sources (helm-descbinds-sources (or buffer (current-buffer)))
+            :buffer "*helm-descbinds*"
+            :resume 'noresume
+            :allow-nest t
+            :input input))))
 
 (provide 'core-helm)
 ;;; core-helm.el ends here

  ;; A simpler prompt: see `helm-global-prompt'
  (advice-add 'helm :filter-args 'narf*helm-replace-prompt)
  ;; Hide mode-line in helm windows
  (advice-add 'helm-display-mode-line :override 'narf*helm-hide-modeline)

  (helm-mode 1))


  (add-hook! kill-emacs 'narf|projectile-invalidate-cache-maybe)

  (setq-default projectile-enable-caching t)
  (setq projectile-require-project-root nil
        projectile-cache-file (concat narf-temp-dir "projectile.cache")
        projectile-known-projects-file (concat narf-temp-dir "projectile.projects")
        projectile-indexing-method 'alien
