Jordon Biondo published a useful gist that allows you to easily navigate to use-package blocks in your .emacs or init.el file. If you have lots of packages—and therefore lots of use-package blocks—you’ll find it useful.
Biondo recommends that you install imenu-anywhere to make the most use of the hack and I agree. Without imenu-anywhere, you have to first ask imenu for Used.Packages and then the particular block you want. With imenu-anywhere you just specify the block. You also get the choices in ido (or Helm if you have it installed) instead of just a plain prompt. You can probably get imenu to use ido as well but imenu-anywhere takes care of that for you.
Biondo doesn’t say how he invokes his code and that turns out to be a little tricky because imenu-generic-expression= is a local variable. I solved that problem by invoking it through the emacs-lisp-mode-hook. I implemented it like this (based on a comment on reddit by xuchunyang):
(use-package imenu-anywhere :ensure t :init (global-set-key (kbd "C-.") 'imenu-anywhere) :config (defun jcs-use-package () (add-to-list 'imenu-generic-expression '("Used Packages" "\\(^\\s-*(use-package +\\)\\(\\_<.+\\_>\\)" 2))) (add-hook 'emacs-lisp-mode-hook #'jcs-use-package))
This bit of Elisp turns out to be pretty handy—I became addicted almost immediately—so you should consider whether or not it will improve your workflow. In either case, imenu-anywhere is a clear win.