     "gk" 'emms-previous
     (kbd "<return>") 'emms-playlist-mode-play-smart
 
+    ;; volume controls
+    "+" 'emms-volume-raise
+    "=" 'emms-volume-raise
+    "-" 'emms-volume-lower
+
+    "u" 'emms-playlist-mode-undo
+
     ;; motion
     "gg" 'emms-playlist-mode-first
     "G" 'emms-playlist-mode-last
     "]" 'emms-playlist-mode-next
     "[" 'emms-playlist-mode-previous
-    "gj" 'emms-playlist-mode-next
-    "gk" 'emms-playlist-mode-previous
 
     "D" 'emms-playlist-mode-kill-track ; emms-browser uses "D"
     "C" 'emms-playlist-mode-clear

  (evil-next-line)
  (evil-collection-emms-playlist-mode-paste-before))

(defun evil-collection-emms-setup ()
  "Set up `evil' bindings for `emms'."
  (advice-add 'emms-browser :after 'evil-collection-emms-browser)
  (evil-set-initial-state 'emms-playlist-mode 'motion)

  (with-eval-after-load 'emms-browser
    (dolist (map (list emms-browser-mode-map emms-playlist-mode-map))
      (evil-define-key* 'motion map
                        "+" 'emms-volume-raise
                        "=" 'emms-volume-raise
                        "-" 'emms-volume-lower
                        "u" 'emms-playlist-mode-undo))

    ;; TODO: Why do we need to define emms-browser-mode-map after load and not emms-playlist-mode-map?
    (evil-define-key 'motion emms-browser-mode-map
      ;; playback controls
      "x" 'emms-pause
      "X" 'emms-stop
      "r" 'emms-random
      "<" 'emms-seek-backward
      ">" 'emms-seek-forward
      (kbd "<return>") 'emms-browser-add-tracks
      (kbd "C-<return>") 'emms-browser-add-tracks-and-play

      ;; motion
      "[" 'emms-browser-prev-non-track
      "]" 'emms-browser-next-non-track
      "gj" 'emms-browser-prev-non-track
      "gk" 'emms-browser-next-non-track

      (kbd "<tab>") 'emms-browser-toggle-subitems
      (kbd "SPC") 'emms-browser-toggle-subitems
      ;; TODO: Use S-<tab>?
      "g1" 'emms-browser-collapse-all
      "g2" 'emms-browser-expand-to-level-2
      "g3" 'emms-browser-expand-to-level-3
      "g4" 'emms-browser-expand-to-level-4
      "g0" 'emms-browser-expand-all
      "ga" 'emms-browse-by-artist
      "gA" 'emms-browse-by-album
      "gb" 'emms-browse-by-genre
      "gy" 'emms-browse-by-year
      "gc" 'emms-browse-by-composer
      "gp" 'emms-browse-by-performer

      "/" 'emms-isearch-buffer ; This shows hidden items during search.

      ;; filter
      ;; "" 'emms-browser-previous-filter ; TODO: What does this do?
      ;; "" 'emms-browser-next-filter

      "s" (lookup-key emms-browser-mode-map (kbd "s"))
      "g" (lookup-key emms-browser-mode-map (kbd "W")) ;; TODO: This overrides other "g-" prefixed keys.

      "C" 'emms-browser-clear-playlist
      "D" 'emms-browser-delete-files
      "d" 'emms-browser-view-in-dired
      "gd" 'emms-playlist-mode-goto-dired-at-point)) ; "d" does the same, keep "gd" for consistency.

  (evil-define-key 'motion emms-playlist-mode-map
    ;; playback controls

;;; - next/previous
;;; - fast-forward/backward

;;; TODO: Add bindings to emms-browser-search-mode-map and emms-metaplaylist-mode-map.

(defun evil-collection-emms-playlist-mode-insert-newline-above ()
  "Insert a newline above point."
