diff options
Diffstat (limited to '.config/emacs')
-rw-r--r-- | .config/emacs/modules/bd--emms.el | 21 | ||||
-rw-r--r-- | .config/emacs/modules/bd--minibuffer.el | 127 |
2 files changed, 117 insertions, 31 deletions
diff --git a/.config/emacs/modules/bd--emms.el b/.config/emacs/modules/bd--emms.el index b19264c..25bb9d9 100644 --- a/.config/emacs/modules/bd--emms.el +++ b/.config/emacs/modules/bd--emms.el @@ -4,6 +4,7 @@ (use-package emms + :demand t :config (emms-all) (require 'emms-player-mpv) @@ -23,6 +24,7 @@ playback." (if (get-buffer emms-playlist-buffer-name) (display-buffer emms-playlist-buffer-name) (message "The Ainur cannot hear you..."))) + (keymap-global-set "C-z C-s" #'emms-quickstart) (keymap-global-set "C-z C-m" #'switch-to-emms) (keymap-set emms-playlist-mode-map "q" #'quit-window) @@ -34,14 +36,8 @@ playback." emms-player-list '(emms-player-mpv) emms-player-mpv-environment '("PULSE_PROP_media.role=music") emms-player-mpv-parameters '("--quiet" "--really-quiet" "--no-audio-display" "--force-window=no" "--vo=null")) - :custom - ;; set dir and volume keys - (emms-source-file-default-directory (expand-file-name "~/ik/playlists/")) - ;; misc - (emms-info-report-each-num-tracks 2000) - (emms-playlist-buffer-name "*Playlist*") - (emms-mode-line-format " %s ") - (emms-track-description-function + (setopt + emms-track-description-function '(lambda (track) (let ((artist (emms-track-get track 'info-artist)) (title (emms-track-get track 'info-title))) @@ -51,7 +47,14 @@ playback." (title title) (t - (emms-track-simple-description track))))))) + (emms-track-simple-description track)))))) + :custom + ;; set dir and volume keys + (emms-source-file-default-directory (expand-file-name "~/ik/playlists/")) + ;; misc + (emms-info-report-each-num-tracks 2000) + (emms-playlist-buffer-name "*Playlist*") + (emms-mode-line-format " %s ")) (provide 'bd--emms) diff --git a/.config/emacs/modules/bd--minibuffer.el b/.config/emacs/modules/bd--minibuffer.el index 02451bb..1426528 100644 --- a/.config/emacs/modules/bd--minibuffer.el +++ b/.config/emacs/modules/bd--minibuffer.el @@ -3,11 +3,110 @@ ;;; Code: -(setopt use-short-answers t - vc-follow-symlinks t - completion-ignore-case t - read-buffer-completion-ignore-case t) -(minibuffer-depth-indicate-mode 1) +(defvar bd/navigate-recent-display-number 3 + "The number of recent buffers that show up in bd/navigate.") +(defvar bd/blacklisted-buffer-regexp-list + '( + "\\*Async Shell Command\\*" + "\\*http" + "\\magit-process" + "\\*Minibuf" + "\\*Echo Area" + "\\*newsticker" + "\\*Org Preview LaTeX Output\\*" + "\\*Shell Command Output\\*" + "\\*tramp" + ) + "Buffers that should not show up in buffer-related +selection commands.") + +(defun bd/buffer-exwm-p (buf) + "Return non-nil if BUF is an `exwm-mode' buffer." + (member + (buffer-local-value 'major-mode (get-buffer buf)) + '(exwm-mode))) + +(defun bd/buffer-text-p (buf) + "Return non-nil if BUF derives from `text-mode'." + (provided-mode-derived-p (buffer-local-value 'major-mode (get-buffer buf)) 'text-mode)) + +(defun bd/buffer-prog-p (buf) + "Return non-nil if BUF derives from `prog-mode'." + (provided-mode-derived-p (buffer-local-value 'major-mode (get-buffer buf)) 'prog-mode)) + +(defun bd/buffer-dired-p (buf) + "Return non-nil if BUF is a `dired-mode' buffer." + (member + (buffer-local-value 'major-mode (get-buffer buf)) + '(dired-mode))) + +(defun bd/buffer-erc-p (buf) + "Return non-nil if BUF is an `erc-mode' buffer." + (member + (buffer-local-value 'major-mode (get-buffer buf)) + '(erc-mode))) + +(defun bd/buffer-blacklisted-p (buf) + "Return non-nil if BUF is blacklisted." + (cl-reduce (lambda (x y) (or x y)) (mapcar (lambda (r) (string-match r buf)) + bd/blacklisted-buffer-regexp-list))) + +(defun bd/buffer-ordinary-p (buf) + "Return non-nil if BUF does not fit into known categories." + (not (or (bd/buffer-exwm-p buf) + (bd/buffer-text-p buf) + (bd/buffer-prog-p buf) + (bd/buffer-dired-p buf) + (bd/buffer-erc-p buf)))) + +(defun bd/buffer-list () + "Return a list of non-blacklisted buffers." + (cl-remove-if #'bd/buffer-blacklisted-p (mapcar 'buffer-name (buffer-list)))) + +(defun bd/selector-recent-buffers () + (selector-source-create + "Recent" + :candidates + (take bd/navigate-recent-display-number + (cl-remove-if (lambda (b) + (get-buffer-window b 'visible)) + (bd/buffer-list))) + :actions + selector-buffer-actions)) + +(defun bd/selector-project-files () + (selector-source-create + "Project Files" + :candidates + (let ((proj (project-current))) + (when proj + (project-files proj))) + :actions + selector-file-actions)) + +(defmacro bd/selector-buffer-type (name c) + `(selector-source-create + ,name + :candidates + (cl-remove-if-not ,c (bd/buffer-list)) + :actions + selector-buffer-actions)) + +(defun bd/navigate () + (interactive) + (selector + (list + (bd/selector-recent-buffers) + (bd/selector-buffer-type "EXWM" #'bd/buffer-exwm-p) + (bd/selector-buffer-type "Text" #'bd/buffer-text-p) + (bd/selector-buffer-type "Source" #'bd/buffer-prog-p) + (bd/selector-buffer-type "Directories" #'bd/buffer-dired-p) + (bd/selector-buffer-type "IRC" #'bd/buffer-erc-p) + (bd/selector-buffer-type "Ordinary" #'bd/buffer-ordinary-p) + (bd/selector-project-files) + (bd/selector-bookmarks) + (selector-recentf-source)))) +(keymap-global-set "C-x b" 'bd/navigate) (use-package vertico :init @@ -16,24 +115,8 @@ (vertico-reverse-mode) (vertico-cycle t)) -(use-package marginalia - :init - (marginalia-mode)) - -(use-package orderless - :custom - ;; order to try completions - (completion-styles '(basic - substring - initials - flex - orderless)) - (completion-category-defaults nil) - (completion-category-overrides '((file (styles partial-completion))))) - (use-package consult - :bind (("C-x b" . consult-buffer) - ("H-s d" . consult-find) + :bind (("H-s d" . consult-find) ("H-s c" . consult-locate) ("H-s g" . consult-grep) ("H-s G" . consult-git-grep) |