diff options
author | bd <bdunahu@operationnull.com> | 2024-10-28 20:10:16 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2024-10-28 20:10:16 -0400 |
commit | 1efe6886049b0143e55ccb77dc7d59966e9dd081 (patch) | |
tree | 3296af39b61b50405058a1248e355318c616b2b2 /.config/emacs | |
parent | 05791ee8b63f37513fb1eaf1dcef77de5227994d (diff) |
Configure built-in with use-package
Diffstat (limited to '.config/emacs')
-rw-r--r-- | .config/emacs/init.el | 27 | ||||
-rw-r--r-- | .config/emacs/libraries/selector.el | 4 | ||||
-rw-r--r-- | .config/emacs/modules/bd--browse.el | 34 | ||||
-rw-r--r-- | .config/emacs/modules/bd--buffers.el (renamed from .config/emacs/modules/bd--windows.el) | 33 | ||||
-rw-r--r-- | .config/emacs/modules/bd--devel.el | 80 | ||||
-rw-r--r-- | .config/emacs/modules/bd--dictionary.el | 9 | ||||
-rw-r--r-- | .config/emacs/modules/bd--emms.el | 72 | ||||
-rw-r--r-- | .config/emacs/modules/bd--erc.el | 53 | ||||
-rw-r--r-- | .config/emacs/modules/bd--essentials.el | 54 | ||||
-rw-r--r-- | .config/emacs/modules/bd--files.el | 13 | ||||
-rw-r--r-- | .config/emacs/modules/bd--themes.el | 6 |
11 files changed, 183 insertions, 202 deletions
diff --git a/.config/emacs/init.el b/.config/emacs/init.el index baae521..555e85f 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -25,6 +25,28 @@ (setopt warning-minimum-level :error) +;;;; basic +(keymap-global-unset "C-z") +(keymap-global-unset "C-x C-z") +(global-set-key (kbd "C-x C-b") 'ibuffer) +(global-set-key (kbd "C-z =") 'text-scale-increase) +(global-set-key (kbd "C-z -") 'text-scale-decrease) + +(setopt inhibit-startup-message t + initial-major-mode 'eshell-mode + initial-scratch-message nil) +(setopt text-scale-mode-step 1.1) +(setopt kill-whole-line t + sentence-end-double-space nil + next-line-add-newlines t + scroll-up-aggressively '0.50 + scroll-down-aggressively '0.50) +(setq-default tab-width 8) +(tooltip-mode -1) +(global-hl-line-mode 1) +(global-visual-line-mode t) + + ;;;; gnus (keymap-global-set "C-c m" #'gnus) (setopt readmail-command 'gnus @@ -59,9 +81,8 @@ ;;;; load modules -(require 'bd--essentials) -(require 'bd--rss) (require 'bd--browse) +(require 'bd--rss) (require 'bd--gpg) (require 'bd--tabs) (require 'bd--files) @@ -70,7 +91,7 @@ (require 'bd--erc) (require 'bd--shells) (require 'bd--minibuffer) -(require 'bd--windows) +(require 'bd--buffers) (require 'bd--devel) (require 'bd--org) (require 'bd--notes) diff --git a/.config/emacs/libraries/selector.el b/.config/emacs/libraries/selector.el index 8b16637..ea16eec 100644 --- a/.config/emacs/libraries/selector.el +++ b/.config/emacs/libraries/selector.el @@ -515,7 +515,7 @@ INHERIT-INPUT-METHOD have the same meaning as in `completing-read'." (defvar selector-buffer-actions (list 'switch-to-buffer - (cons (kbd "M-D") 'kill-buffer))) + (cons (kbd "C-k") 'kill-buffer))) ;;;###autoload (defun selector-buffers-source (&optional sort-pred) @@ -542,7 +542,7 @@ An optional SORT-PRED may be provided to sort the buffers (see `sort')." (defvar selector-file-actions (list 'find-file - (cons (kbd "M-D") (lambda (f) + (cons (kbd "C-d") (lambda (f) (when (y-or-n-p (concat "Delete file " f "? ")) (delete-file f)))))) diff --git a/.config/emacs/modules/bd--browse.el b/.config/emacs/modules/bd--browse.el index 83bf0a2..3dd15fe 100644 --- a/.config/emacs/modules/bd--browse.el +++ b/.config/emacs/modules/bd--browse.el @@ -53,23 +53,29 @@ icecat, or eww." (list (bd/selector-bookmarks) (bd/selector-search))))) - -;;;; eww -(setopt shr-use-fonts t - shr-cookie-policy nil - shr-max-width 85 - ;; send only user agent - url-privacy-level '(email os emacs lastloc cookies) - eww-search-prefix "https://duckduckgo.com/html/?q=" - eww-auto-rename-buffer 'title - eww-use-browse-url (regexp-opt '("mailto:" - "youtube.com" - "youtu.be")) - browse-url-handlers +(setopt browse-url-handlers `((,(regexp-opt '("youtube.com" "youtu.be")) . (lambda (url &rest _) (message "Ludu %s" url) - (start-process-shell-command "rip-video" nil (concat "rip-video " url)))))) + (start-process-shell-command "rip-video" nil (concat "rip-video " url))))) + url-privacy-level '(email os emacs lastloc cookies)) + +(use-package shr + :custom + (shr-use-fonts t) + (shr-cookie-policy nil) + (shr-max-width 85)) + +(use-package eww + :custom + (eww-search-prefix "https://duckduckgo.com/html/?q=") + (eww-auto-rename-buffer 'title) + (eww-use-browse-url (regexp-opt '("mailto:" + "youtube.com" + "youtu.be")))) + +(use-package apropos + :bind (("C-h a" . selector-apropos))) (provide 'bd--browse) diff --git a/.config/emacs/modules/bd--windows.el b/.config/emacs/modules/bd--buffers.el index 282ca14..c80e75f 100644 --- a/.config/emacs/modules/bd--windows.el +++ b/.config/emacs/modules/bd--buffers.el @@ -3,15 +3,6 @@ ;;; Code: -;;;; defaults -(menu-bar-mode -1) -(tool-bar-mode -1) -(scroll-bar-mode -1) - -;; no fringe -(fringe-mode '(0 . 0)) - - ;; dedication (defun toggle-current-window-dedication () "Adds or revokes dedicated window status from a buffer. A @@ -34,25 +25,21 @@ dedicated buffer will never be automatically orphaned." (other-window -1) (follow-mode 1)) -;; alpha -(defun bd/clamp (lower-bound upper-bound value) - (max lower-bound (min value upper-bound))) - (defun set-frame-alpha (value) "Sets the transparency of the frame background. 0=transparent/100=opaque Due to a bug with guix-packaged emacs, only uses true-transparency on wayland." (interactive "nTransparency Value (30 - 100 opaque): ") - (setq value (bd/clamp 30 100 value)) - (if (equal display "wayland") - (set-frame-parameter (selected-frame) 'alpha-background value) - (set-frame-parameter (selected-frame) 'alpha `(,value . ,value))) + (setq value (max 30 (min value 100))) (message "Alpha set to %d" value)) -(if (equal display "wayland") - (add-to-list 'default-frame-alist '(alpha-background . 66)) - (add-to-list 'default-frame-alist '(alpha . (82 . 82)))) +(add-to-list 'default-frame-alist '(alpha . (92 . 92))) +(use-package autorevert + :init + (global-auto-revert-mode) + :custom + (global-auto-revert-non-file-buffers t) + (auto-revert-interval 30)) -;;;; shackle (use-package shackle :demand t :config @@ -82,5 +69,5 @@ Due to a bug with guix-packaged emacs, only uses true-transparency on wayland." (shackle-default-rule '(:select t))) -(provide 'bd--windows) -;;; bd-windows ends here +(provide 'bd--buffers) +;;; bd-buffers ends here diff --git a/.config/emacs/modules/bd--devel.el b/.config/emacs/modules/bd--devel.el index a1bbbf7..c1254b9 100644 --- a/.config/emacs/modules/bd--devel.el +++ b/.config/emacs/modules/bd--devel.el @@ -3,27 +3,6 @@ ;;; Code: -;;;; line numbers -(setopt display-line-numbers-type 'relative) - -(defvar bd/enable-line-numbers-in-hooks - '(prog-mode-hook) - "List of hook symbols to add `display-line-numbers-mode' -to.") - -(mapc - (lambda (hook) - (add-hook hook #'display-line-numbers-mode)) - bd/enable-line-numbers-in-hooks) - - -;;;; outline mode -(setq-default - outline-minor-mode-cycle t - outline-minor-mode-highlight t) - - -;;;; general (defun request-sudo () "Uses TRAMP to edit current opened file as root." (interactive) @@ -32,38 +11,55 @@ to.") (concat "/sudo:root@localhost:" buffer-file-name)))) -(defun bd/compile-dwim (f) - (let ((default-directory - (or (locate-dominating-file "." "Makefile") ;; make - (locate-dominating-file "." "build.xml") ;; ant - (locate-dominating-file "." "manifest.scm") ;; guix - default-directory))) - (call-interactively f))) - -(setq compilation-always-kill t - compilation-scroll-output 'first-error) -(keymap-set prog-mode-map "C-," #'(lambda () - (interactive) - (bd/compile-dwim #'recompile))) -(keymap-set prog-mode-map "C-<" #'(lambda () - (interactive) - (bd/compile-dwim #'compile))) - (add-hook 'prog-mode-hook (lambda () (font-lock-add-keywords nil '(("\\<\\(FIX\\(ME\\)?\\|TODO\\)" 1 font-lock-warning-face t))))) -;; my custom cleanup mode -(require 'autoformat) -(autoformat-mode 1) +(setopt display-line-numbers-type 'relative) +(defvar bd/enable-line-numbers-in-hooks + '(prog-mode-hook) + "List of hook symbols to add `display-line-numbers-mode' +to.") +(mapc + (lambda (hook) + (add-hook hook #'display-line-numbers-mode)) + bd/enable-line-numbers-in-hooks) -;; questionable default (indent-tabs-mode 0) ;; skr is a scheme extension (add-to-list 'auto-mode-alist '("\\.skr\\'" . scheme-mode)) +(use-package autoformat + :custom + (autoformat-mode 1)) + +(use-package compile + :custom + (compilation-always-kill t) + (compilation-scroll-output 'first-error) + :config + (defun bd/compile-dwim (f) + (let ((default-directory + (or (locate-dominating-file "." "Makefile") ;; make + (locate-dominating-file "." "build.xml") ;; ant + (locate-dominating-file "." "manifest.scm") ;; guix + default-directory))) + (call-interactively f))) + + (keymap-set prog-mode-map + "C-," #'(lambda () + (interactive) + (bd/compile-dwim #'recompile))) + (keymap-set prog-mode-map + "C-<" #'(lambda () + (interactive) + (bd/compile-dwim #'compile)))) + +(use-package man + :custom + (Man-notify-method 'pushy)) (use-package rainbow-mode :hook css-mode) diff --git a/.config/emacs/modules/bd--dictionary.el b/.config/emacs/modules/bd--dictionary.el index c46fe7b..79dd2d1 100644 --- a/.config/emacs/modules/bd--dictionary.el +++ b/.config/emacs/modules/bd--dictionary.el @@ -3,9 +3,12 @@ ;;; Code: -(keymap-global-set "C-c i" 'dictionary-lookup-definition) -(setopt dictionary-server "localhost" - dictionary-use-single-buffer t) +(use-package dictionary + :defer t + :bind (("C-c i" . dictionary-lookup-definition)) + :custom + (dictionary-server "localhost") + (dictionary-use-single-buffer t)) (provide 'bd--dictionary) diff --git a/.config/emacs/modules/bd--emms.el b/.config/emacs/modules/bd--emms.el index ff5b192..b19264c 100644 --- a/.config/emacs/modules/bd--emms.el +++ b/.config/emacs/modules/bd--emms.el @@ -3,54 +3,56 @@ ;;; Code: -(defun emms-quickstart () - "Queues a shuffled playlist and starts -playback." - (interactive) - (emms-stop) - (when (bufferp emms-playlist-buffer-name) - (kill-buffer emms-playlist-buffer-name)) - (emms-play-directory-tree (expand-file-name "~/ik/music/")) - (emms-shuffle)) - - (use-package emms - :bind (("C-z C-s" . 'emms-quickstart)) :config (emms-all) (require 'emms-player-mpv) + (require 'emms-playlist-mode) + + (defun emms-quickstart () + "Queues a shuffled playlist and starts +playback." + (interactive) + (emms-stop) + (when (bufferp emms-playlist-buffer-name) + (kill-buffer emms-playlist-buffer-name)) + (emms-play-directory-tree (expand-file-name "~/ik/music/")) + (emms-shuffle)) + (defun switch-to-emms () + (interactive) + (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) + (add-to-list 'emms-player-list 'emms-player-mpv) - (keymap-global-set "C-z C-m" (lambda () - (interactive) - (if (get-buffer emms-playlist-buffer-name) - (display-buffer emms-playlist-buffer-name) - (message "The Ainur cannot hear you...")))) (emms-playing-time-disable-display) - (setopt emms-track-description-function - '(lambda (track) - (let ((artist (emms-track-get track 'info-artist)) - (title (emms-track-get track 'info-title))) - (cond - ((and artist title) - (concat artist " - " title)) - (title - title) - (t - (emms-track-simple-description track)))))) - (keymap-set emms-playlist-mode-map "q" #'quit-window) - (setq-default - emms-playlist-default-major-mode 'emms-playlist-mode + (setq-default emms-playlist-default-major-mode 'emms-playlist-mode - 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")) + 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-mode-line-format " %s ") + (emms-track-description-function + '(lambda (track) + (let ((artist (emms-track-get track 'info-artist)) + (title (emms-track-get track 'info-title))) + (cond + ((and artist title) + (concat artist " - " title)) + (title + title) + (t + (emms-track-simple-description track))))))) + (provide 'bd--emms) ;;; bd-emms ends here diff --git a/.config/emacs/modules/bd--erc.el b/.config/emacs/modules/bd--erc.el index 124358c..4597fae 100644 --- a/.config/emacs/modules/bd--erc.el +++ b/.config/emacs/modules/bd--erc.el @@ -1,32 +1,35 @@ -;; -*- lexical-binding: t; -*- +;;; -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: (require 'erc) (with-eval-after-load "erc" (defalias 'erc 'erc-tls)) - -(defvar-local bd/erc-status - '(:eval - erc-modified-channels-object)) - -(add-to-list 'global-mode-string bd/erc-status) - -(setopt erc-lurker-threshold-time 3600 - erc-hide-list '("JOIN" "PART" "QUIT") - erc-server "operationnull.com" - erc-nick "Isaz" - erc-prompt-for-password t - erc-kill-buffer-on-part t - ;; erc-autojoin-channels-alist '(("libera.chat" - ;; "#emacs" - ;; "##furry" - ;; "#guile" - ;; "#guix" - ;; "#parabola")) - erc-autojoin-channels-alist nil - erc-fill-function 'erc-fill-static - erc-fill-column 80 - erc-fill-static-center 15) -(erc-autojoin-mode -1) +(use-package erc + :defer t + :custom + (erc-lurker-threshold-time 3600) + (erc-hide-list '("JOIN" "PART" "QUIT")) + (erc-server "operationnull.com") + (erc-nick "Isaz") + (erc-prompt-for-password t) + (erc-kill-buffer-on-part t) + ;; (erc-autojoin-channels-alist '(("libera.chat" + ;; "#emacs" + ;; "##furry" + ;; "#guile" + ;; "#guix" + ;; "#parabola"))) + (erc-autojoin-channels-alist nil) + (erc-fill-function 'erc-fill-static) + (erc-fill-column 80) + (erc-fill-static-center 15) + :config + (erc-autojoin-mode -1) + (defvar-local bd/erc-status + '(:eval + erc-modified-channels-object)) + (add-to-list 'global-mode-string bd/erc-status)) (provide 'bd--erc) diff --git a/.config/emacs/modules/bd--essentials.el b/.config/emacs/modules/bd--essentials.el deleted file mode 100644 index e8ea502..0000000 --- a/.config/emacs/modules/bd--essentials.el +++ /dev/null @@ -1,54 +0,0 @@ -;;; -*- lexical-binding: t; -*- -;;; Commentary: -;;; Code: - - -;;;; standard bindings -(keymap-global-unset "C-z") -(keymap-global-unset "C-x C-z") - -(global-set-key (kbd "C-x C-b") 'ibuffer) - -(global-set-key (kbd "C-z =") 'text-scale-increase) -(global-set-key (kbd "C-z -") 'text-scale-decrease) -(setopt text-scale-mode-step 1.1) -(repeat-mode 1) - - -;;;; UI -(setopt inhibit-startup-message t - initial-major-mode 'eshell-mode - initial-scratch-message nil) -(tooltip-mode -1) - -(defun pulse-line (&rest _) - "Pulse the current line." - (pulse-momentary-highlight-one-line (point))) - -(dolist (command '(scroll-up-command scroll-down-command - recenter-top-bottom other-window)) - (advice-add command :after #'pulse-line)) - - -;;;; defaults -;; basic editing -(setopt kill-whole-line t - sentence-end-double-space nil) -(setq-default tab-width 8) -(global-hl-line-mode 1) -(global-visual-line-mode t) - -(setopt next-line-add-newlines t) - - -;;;; buffers -(global-auto-revert-mode 1) -(setopt global-auto-revert-non-file-buffers t - auto-revert-interval 30) -(setopt scroll-up-aggressively '0.50 - scroll-down-aggressively '0.50) -(setopt Man-notify-method 'pushy) - - -(provide 'bd--essentials) -;;; bd-essentials ends here diff --git a/.config/emacs/modules/bd--files.el b/.config/emacs/modules/bd--files.el index 6ea121b..52b46ae 100644 --- a/.config/emacs/modules/bd--files.el +++ b/.config/emacs/modules/bd--files.el @@ -15,9 +15,20 @@ (apply f args)))) ;;;; dired +(defun bd/dired-find-file () + (interactive) + (if (file-directory-p (dired-get-file-for-visit)) + (dired-find-alternate-file) + (dired-find-file))) +(defun bd/dired-up-directory () + (interactive) + (let ((buf (current-buffer))) + (dired-up-directory) + (kill-buffer buf))) (require 'dired) (keymap-global-set "C-c d" 'dired-jump) -(keymap-set dired-mode-map "h" #'dired-hide-details-mode) +(keymap-set dired-mode-map "RET" #'bd/dired-find-file) +(keymap-set dired-mode-map "^" #'bd/dired-up-directory) (setopt dired-listing-switches "-alhLG --time-style=long-iso --group-directories-first" diff --git a/.config/emacs/modules/bd--themes.el b/.config/emacs/modules/bd--themes.el index 220b181..b915cd2 100644 --- a/.config/emacs/modules/bd--themes.el +++ b/.config/emacs/modules/bd--themes.el @@ -3,6 +3,12 @@ ;;; Code: +;;;; defaults +(menu-bar-mode -1) +(tool-bar-mode -1) +(scroll-bar-mode -1) +(fringe-mode '(0 . 0)) + ;;;; variable-pitch fonts (defun bd/enable-variable-pitch-exempt () "Text modes to exempt from variable pitch fonts." |