Empv and better +project/generate-tags
This commit is contained in:
@@ -2379,38 +2379,80 @@ and integrates slickly into image-dired. Of course,
|
|||||||
"k" #'image-previous-line
|
"k" #'image-previous-line
|
||||||
"l" #'image-forward-hscroll))
|
"l" #'image-forward-hscroll))
|
||||||
#+end_src
|
#+end_src
|
||||||
** mpv
|
** empv
|
||||||
Little helper which launches an MPV process asynchronously.
|
Emacs MPV bindings, with very cool controls for queuing files for
|
||||||
|
playing.
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package emacs
|
(use-package empv
|
||||||
|
:straight t
|
||||||
:defer t
|
:defer t
|
||||||
:display
|
:init
|
||||||
("\\*mpv\\*"
|
(setq empv-audio-dir (expand-file-name "~/Media/audio")
|
||||||
(display-buffer-reuse-window display-buffer-same-window))
|
empv-video-dir (expand-file-name "~/Media/videos")
|
||||||
:config
|
empv-audio-file-extensions '("mp3" "ogg" "wav" "m4a" "flac" "aac" "opus")
|
||||||
(defvar mpv-args "-v --profile=fast --hwdec=auto-copy"
|
empv-video-file-extensions '("mkv" "mp4" "avi" "mov" "webm"))
|
||||||
"General arguments for mpv binary.")
|
:hydra
|
||||||
|
(empv-hydra
|
||||||
(defun mpv-start-process (url)
|
nil "Hydra for EMPV"
|
||||||
(message "[mpv]: Starting mpv on `%s'" url)
|
("(" #'empv-chapter-prev
|
||||||
(with-current-buffer (get-buffer-create "*mpv*")
|
"chapter-prev" :column "playback")
|
||||||
(ansi-color-for-comint-mode-on)
|
(")" #'empv-chapter-next
|
||||||
(comint-mode))
|
"chapter-next" :column "playback")
|
||||||
(set-process-filter (start-process-shell-command
|
("0" #'empv-volume-up
|
||||||
"mpv" "*mpv*"
|
"volume-up" :column "playback")
|
||||||
(concat "mpv " mpv-args " \"" url "\""))
|
("9" #'empv-volume-down
|
||||||
#'comint-output-filter))
|
"volume-down" :column "playback")
|
||||||
|
("[" #'empv-playback-speed-down
|
||||||
(defun mpv-open-video (&optional arg)
|
"playback-speed-down" :column "playback")
|
||||||
(interactive)
|
("]" #'empv-playback-speed-up
|
||||||
(let ((url (if (stringp arg)
|
"playback-speed-up" :column "playback")
|
||||||
arg
|
("_" #'empv-toggle-video
|
||||||
(expand-file-name (read-file-name "URL?: " default-directory "" t)))))
|
"toggle-video" :column "playback")
|
||||||
(mpv-start-process url)
|
("q" #'empv-exit
|
||||||
(display-buffer "*mpv*")))
|
"exit" :column "playback")
|
||||||
|
("s" #'empv-seek
|
||||||
|
"seek" :column "playback")
|
||||||
|
("t" #'empv-toggle
|
||||||
|
"toggle" :column "playback")
|
||||||
|
("x" #'empv-chapter-select
|
||||||
|
"chapter-select" :column "playback")
|
||||||
|
("N" #'empv-playlist-prev
|
||||||
|
"playlist-prev" :column "playlist")
|
||||||
|
("C" #'empv-playlist-clear
|
||||||
|
"playlist-clear" :column "playlist")
|
||||||
|
("n" #'empv-playlist-next
|
||||||
|
"playlist-next" :column "playlist")
|
||||||
|
("p" #'empv-playlist-select
|
||||||
|
"playlist-select" :column "playlist")
|
||||||
|
("S" #'empv-playlist-shuffle
|
||||||
|
"playlist-shuffle" :column "playlist")
|
||||||
|
("a" #'empv-play-audio
|
||||||
|
"play-audio" :column "play")
|
||||||
|
("R" #'empv-play-random-channel
|
||||||
|
"play-random-channel" :column "play")
|
||||||
|
("d" #'empv-play-directory
|
||||||
|
"play-directory" :column "play")
|
||||||
|
("f" #'empv-play-file
|
||||||
|
"play-file" :column "play")
|
||||||
|
("o" #'empv-play-or-enqueue
|
||||||
|
"play-or-enqueue" :column "play")
|
||||||
|
("r" #'empv-play-radio
|
||||||
|
"play-radio" :column "play")
|
||||||
|
("v" #'empv-play-video
|
||||||
|
"play-video" :column "play")
|
||||||
|
("i" #'empv-display-current
|
||||||
|
"display-current" :column "misc")
|
||||||
|
("l" #'empv-log-current-radio-song-name
|
||||||
|
"log-current-radio-song-name" :column "misc")
|
||||||
|
("c" #'empv-copy-path
|
||||||
|
"copy-path" :column "misc")
|
||||||
|
("Y" #'empv-youtube-last-results
|
||||||
|
"youtube-last-results" :column "misc")
|
||||||
|
("y" #'empv-youtube
|
||||||
|
"youtube" :column "misc"))
|
||||||
:general
|
:general
|
||||||
(app-leader
|
(app-leader
|
||||||
"v" #'mpv-open-video))
|
"e" #'empv-hydra/body))
|
||||||
#+end_src
|
#+end_src
|
||||||
** Grand Unified Debugger (GUD)
|
** Grand Unified Debugger (GUD)
|
||||||
GUD is a system for debugging, hooking into processes and
|
GUD is a system for debugging, hooking into processes and
|
||||||
@@ -2837,11 +2879,11 @@ quickly generate them in C/C++ projects.
|
|||||||
:config
|
:config
|
||||||
(defun +project/generate-tags ()
|
(defun +project/generate-tags ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((project (project-current)))
|
(let* ((project (project-current))
|
||||||
(if (not project)
|
(folder (format "%s" (if project
|
||||||
(message "+project/generate-tags: Not in project.")
|
(project-root project)
|
||||||
(let ((tags-file (concat (project-root project) "TAGS"))
|
default-directory)))
|
||||||
(folder (format "%s" (project-root project))))
|
(tags-file (concat folder "TAGS")))
|
||||||
(set-process-sentinel
|
(set-process-sentinel
|
||||||
(start-process-shell-command
|
(start-process-shell-command
|
||||||
"PROJECT-GENERATE-TAGS"
|
"PROJECT-GENERATE-TAGS"
|
||||||
@@ -2851,8 +2893,11 @@ quickly generate them in C/C++ projects.
|
|||||||
(concat folder "*")))
|
(concat folder "*")))
|
||||||
(lambda (p event)
|
(lambda (p event)
|
||||||
(when (string= event "finished\n")
|
(when (string= event "finished\n")
|
||||||
(visit-tags-table (concat (project-root (project-current)) "TAGS"))
|
(visit-tags-table (concat (if (project-current)
|
||||||
(message "Finished generating tags!")))))))))
|
(project-root (project-current))
|
||||||
|
default-directory)
|
||||||
|
"TAGS"))
|
||||||
|
(message "Finished generating tags!")))))))
|
||||||
#+end_src
|
#+end_src
|
||||||
** devdocs
|
** devdocs
|
||||||
When man pages aren't enough, you need some documentation lookup
|
When man pages aren't enough, you need some documentation lookup
|
||||||
|
|||||||
Reference in New Issue
Block a user