   :config
   (projectile-mode 1)
   (with-eval-after-load 'project
-    (add-to-list 'project-find-functions 'projectile-project-find-function)))
+    (add-to-list 'project-find-functions 'projectile-project-find-function))
+  (with-eval-after-load 'which-key
+    (which-key-add-key-based-replacements "C-c p" "projectile")
+    (which-key-add-keymap-based-replacements projectile-command-map
+      "4" "projectile-other-window"
+      "5" "projectile-other-frame"
+      "x" "projectile-run"
+      "s" "projectile-search")))
 
 (use-package projectile-rails
   :after projectile

  :delight yas-minor-mode
  :commands yas-minor-mode
  :hook ((prog-mode text-mode) . yas-minor-mode)
  :config
  (yas-reload-all)
  :bind (:map yas-minor-mode-map
              ("TAB"   . nil)
              ("<tab>" . nil)
              ("C-c i" . yas-expand-from-trigger-key)))

(use-package yasnippet-snippets)


  :config
  (define-key purpose-mode-map (kbd "C-c ,") nil)
  (define-key purpose-mode-map (kbd "C-c w") purpose-mode-prefix-map)

  (with-eval-after-load 'which-key
    (which-key-add-key-based-replacements "C-c w" "window-purpose")
    (which-key-add-keymap-based-replacements purpose-mode-prefix-map
      "4" "purpose-other-window"
      "5" "purpose-other-frame"))

  (purpose-add-user-purposes
   :modes '((message-mode . edit)
