Surprise! We've been running on hardware provided by BuyVM for a few months and wanted to show them a little appreciation.
Running a paste site comes with unique challenges, ones that aren't always obvious and hard to control. As such, BuyVM offered us a home where we could worry less about the hosting side of things and focus on maintaining a clean and useful service! Go check them out and show them some love!
Description: dot emacs config for emms with mpv
Submitted on September 1, 2020 at 06:10 PM

New Paste 1 (Lisp)

(package-initialize)
;;   Install use-package
;;   (https://jwiegley.github.io/use-package/installation/)
;; mkdir -p "~/.emacs.d/plugins/"
;; torsocks git clone https://github.com/jwiegley/use-package.git ~/.emacs.d/plugins/use-package
;; cd ~/.emacs.d/plugins/use-package
;; make
;; (add-to-list 'load-path "~/.emacs.d/plugins/use-package")
(require 'use-package)
(use-package emms
  ;; Configuration for MPV and simple modeline ----------
  ;; mkdir -p "~/.emacs.d/plugins/"
  ;; cd "~/.emacs.d/plugins/"
  ;; torsocks git clone https://git.savannah.gnu.org/git/emms.git
  ;; cd emms
  ;; make emms-print-metadata
  ;; mv src/emms-print-metadata .
  :load-path "~/.emacs.d/plugins/emms/"
  :config
  ;; Load only what is needed from emms-minimalistic
  (use-package emms-source-file)
  (use-package emms-source-playlist)
  (use-package emms-player-simple)
  (use-package emms-player-mpv)
  ;; Load only what is needed from emms-setup
  (use-package emms-playlist-mode)
  (use-package emms-info)
  (use-package emms-mode-line)
  (use-package emms-mark)
  (use-package emms-show-all)
  (use-package emms-playing-time)
  (use-package emms-player-mpd)
  (use-package emms-playlist-sort)
  (use-package emms-mode-line-icon)
  (use-package emms-cue)
  (use-package emms-last-played)
  (use-package emms-metaplaylist-mode)
  (use-package emms-i18n)

  ;; Use emms-print-metadata
  (use-package emms-info-libtag
    :config
    (setq emms-info-libtag-program-name
          "~/.emacs.d/plugins/emms/emms-print-metadata"
          emms-info-functions '(emms-info-libtag)))

  (setq
   ;; Default time to seek back and forward
   emms-seek-seconds 5
   ;; Use MPV only
   emms-player-list '(emms-player-mpv)
   ;; emms-show-format "♪ %s"         ; overriden by emms-cycle-mode
   emms-source-file-default-directory "~/Music/"
   emms-info-asynchronously t
   ;; Auto-set the playlist mode
   emms-playlist-default-major-mode 'emms-playlist-mode)

  ;; Show the track in the mode-line
  (emms-mode-line 1)
  ;; Clear the mode-line (at the beginning)
  (emms-mode-line-blank)
  ;; Show the playing time in the modeline
  (emms-playing-time 1)
  ;; Does emms-print-metadata deal with CUE? ==> remove
  (add-to-list 'emms-info-functions 'emms-info-cueinfo)
  ;; Testing
  (add-hook 'emms-player-started-hook
            'emms-last-played-update-current)
  (with-eval-after-load 'info
    (info-initialize)
    (add-to-list 'Info-directory-list
                 "~/.emacs.d/plugins/emms/docs/"))
  ;; ;; Disable cache (loading bunch of files on start?!)
  ;; (emms-cache-disable)

  ;; Redefine emms to just load the playlist
  (defun my-emms ()
    "my: Switch to the current emms-playlist buffer, use
emms-playlist-mode and query for a directory tree to add to
the playlist."
    (interactive)
    (if (or (null emms-playlist-buffer)
            (not (buffer-live-p emms-playlist-buffer)))
        (call-interactively 'dired))
    (emms-playlist-mode-go))

  (defun my-emms-random ()
    "my: Toggle the emms random play mode"
    (interactive)
    (if emms-random-playlist
        (setq emms-random-playlist nil)
      (setq emms-random-playlist t)))

  (defun my-emms-track-description (track)
    "my: Get the EMMS description or the base file name of the
current track"
    (let ((desc (emms-info-track-description track)))
      (if (file-readable-p desc)
          (file-name-nondirectory desc)
        desc))
    )

  ;; Show the track artist and song name, or file name
  (setq emms-track-description-function
        'my-emms-track-description)
  (add-to-list 'emms-track-initialize-functions
               'emms-info-initialize-track)

  ;; Short mode-line for EMMS
  (use-package emms-mode-line-cycle
    ;; https://github.com/momomo5717/emms-mode-line-cycle.git
    :load-path "~/.emacs.d/plugins/emms-mode-line-cycle"
    :config
    (emms-mode-line-cycle 1)
    )

  (define-key emms-playlist-mode-map "a" 'emms-add-file)
  (define-key emms-playlist-mode-map "P" 'emms-add-playlist)
  (define-key emms-playlist-mode-map "S" 'emms-seek)
  (define-key emms-playlist-mode-map "\C-cs" 'emms-shuffle)

  :bind
  ("s-m s-m" . my-emms)
  ;; ("s-m s-B" . emms-browser)
  ("s-m a" . emms-add-file)
  ("s-m P" . emms-add-playlist)
  ("s-m e" . emms-tag-editor-edit)
  ("<XF86AudioPrev>" . emms-previous)
  ("<XF86AudioNext>" . emms-next)
  ("s-m SPC" . emms-pause)
  ("s-m n" . emms-next)
  ("s-m p" . emms-previous)
  ("s-m SPC" . emms-pause)
  ("<XF86AudioPlay>" . emms-pause)
  ("s-m S" . emms-seek)
  ("s-m <" . emms-seek-backward)
  ("s-m >" . emms-seek-forward)
  ("s-m s" . emms-stop)
  ("s-m C" . emms-playlist-current-clear)
  ("s-m C-c s" . emms-shuffle)
  ("<XF86AudioStop>" . emms-stop)
  ("s-m d a" . emms-add-dired)
  )