#+TITLE: Core - Buffer #+AUTHOR: Juan Placencia * Package Define core buffer package. #+BEGIN_SRC emacs-lisp (use-package emacs :after uno :config (provide 'uno-buffer)) #+END_SRC * Useful/Useless Buffers Define useful and useless buffers. Borrowed from Spacemacs. #+BEGIN_SRC emacs-lisp (use-package emacs :after uno-buffer :init (defvar uno--useful-buffers nil "Regexp used to determine if a buffer is useful.") (defvar uno--useless-buffers nil "Regexp used to determine if a buffer is useless.") (defun uno/add-useful-buffer (buffer) "Add BUFFER to useful buffers." (push buffer uno--useful-buffers)) (defun uno/add-useless-buffer (buffer) "Add BUFFER to useless buffers." (push buffer uno--useless-buffers)) (defun uno/useful-buffer-p (buffer) "Determines if a buffer is useful." (let ((buf-name (buffer-name buffer))) (or (provided-mode-derived-p (buffer-local-value 'major-mode buffer) 'comint-mode) (cl-loop for useful-regexp in uno--useful-buffers thereis (string-match-p useful-regexp buf-name)) (cl-loop for useless-regexp in uno--useless-buffers never (string-match-p useless-regexp buf-name))))) :config (uno/add-useless-buffer "\\*compilation\\*") (uno/add-useless-buffer "\\*Completions\\*") (uno/add-useless-buffer "\\*Messages\\*") (uno/add-useless-buffer "\\*scratch\\*") (uno/add-useless-buffer "\\*straight-byte-compilation\\*") (uno/add-useless-buffer "\\*straight-process\\*") (let ((buf-pred-entry (assq 'buffer-predicate default-frame-alist))) (if buf-pred-entry (setcdr buf-pred-entry 'uno/useful-buffer-p) (push '(buffer-predicate . uno/useful-buffer-p) default-frame-alist)))) #+END_SRC * Keybinds #+BEGIN_SRC emacs-lisp (use-package emacs :after uno-buffer :general (uno-leader-define "b" '(:ignore t :which-key "Buffer") "bd" '(uno/kill-this-buffer :which-key "Kill buffer") "bm" '(uno/switch-to-messages-buffer :which-key "Messages") "bn" '(next-buffer :which-key "Next buffer") "bp" '(previous-buffer :which-key "Previous buffer")) :init (defun uno/kill-this-buffer () "Split the window vertically and focus the new window." (interactive) (if (window-minibuffer-p) (abort-recursive-edit) (kill-buffer))) (defun uno/switch-to-messages-buffer () "Split the window horizontally and focus the new window." (interactive) (with-current-buffer (messages-buffer) (goto-char (point-max)) (pop-to-buffer (current-buffer))))) #+END_SRC