Since I already use counsel-projectile, why not leverage it to my needs?
(defun mu-switch-to-project-buffer-if-in-project (arg) "Custom switch to buffer. With universal argument ARG or when not in project, rely on `ivy-switch-buffer'. Otherwise, use `counsel-projectile-switch-to-buffer'." (interactive "P") (if (or arg (not (projectile-project-p))) (ivy-switch-buffer) (counsel-projectile-switch-to-buffer))) (bind-key* "C-x b" #'mu-switch-to-project-buffer-if-in-project)
Pretty self-explanatory. By default, when not in a project
counsel-projectile-switch-to-buffer asks you for the project to switch to.
However, if I am not in a project chances are I want to switch to a buffer that doesn’t belong to a project, especially since I usually enter a project before switching to one of its buffers.
nswbuff has previews and back-and-forth navigation, so it still offers a nicer solution to buffer switching. This is Emacs, of course, so you know the deal: endless possibilities.