diff options
author | bd <bdunahu@operationnull.com> | 2024-10-28 21:25:32 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2024-10-28 21:25:32 -0400 |
commit | 05ccbaca9869f2cb89531ccc7cbd2be301ace548 (patch) | |
tree | 7b23d286286450da1fd4f9b3b297309f7a7978d7 | |
parent | 89889525ccf70b36ac06e5bf9294ecf7fd0066de (diff) |
Incomplete switch-buffer selector, remove marginalia/orderless
-rw-r--r-- | .config/emacs/modules/bd--emms.el | 21 | ||||
-rw-r--r-- | .config/emacs/modules/bd--minibuffer.el | 127 | ||||
-rw-r--r-- | .config/guix/modules/emacs.scm | 2 |
3 files changed, 117 insertions, 33 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) diff --git a/.config/guix/modules/emacs.scm b/.config/guix/modules/emacs.scm index c6ff522..ab2f10c 100644 --- a/.config/guix/modules/emacs.scm +++ b/.config/guix/modules/emacs.scm @@ -35,8 +35,6 @@ emacs-guix emacs-lua-mode emacs-magit - emacs-marginalia - emacs-orderless emacs-paredit emacs-pinentry emacs-rainbow-delimiters |