X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/c247fbc884f7fef621152bd013ef7ca3b276f389..7c4bf72a0222274dc5c9c627aad135f40f7c13dc:/.emacs.d/init.el diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 8e0f9d7..5006ab4 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -266,9 +266,21 @@ (previous-line) (insert "\n \n;;; ")) +(defvar b/fill-column 47 + "My custom `fill-column'.") + +(defconst b/asterism "* * *") + (defun b/insert-asterism () + "Insert a centred asterism." (interactive) - (insert "\n\n * * *\n\n")) + (insert + (concat + "\n\n" + (make-string (floor (/ (- b/fill-column (length b/asterism)) 2)) + ?\s) + b/asterism + "\n\n"))) (defun b/no-mouse-autoselect-window () "Conveniently disable `focus-follows-mouse'. @@ -301,7 +313,9 @@ For disabling the behaviour for certain buffers and/or modes." scroll-conservatively 10 scroll-preserve-screen-position 1 ;; focus follows mouse - mouse-autoselect-window t) + mouse-autoselect-window t + ;; custom fill-column + fill-column b/fill-column) (setq-default ;; always use space for indentation @@ -543,12 +557,13 @@ For disabling the behaviour for certain buffers and/or modes." ;; for back and forward mouse keys ("" . previous-buffer) ("" . previous-buffer) - ("" . previous-buffer) + ;; ("" . previous-buffer) ("" . next-buffer) ("" . next-buffer) - ("" . next-buffer) - ("" . kill-this-buffer) - ("" . switch-to-buffer)) + ;; ("" . next-buffer) + ;; ("" . kill-this-buffer) + ;; ("" . switch-to-buffer) + ) (bind-keys :prefix-map b/straight-prefix-map @@ -914,7 +929,7 @@ around if needed." :custom (magit-diff-refine-hunk t) (magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1) - (magit-completing-read-function 'magit-ido-completing-read) + ;; (magit-completing-read-function 'magit-ido-completing-read) :custom-face (magit-diff-file-heading ((t (:weight normal))))) ;; recently opened files @@ -936,59 +951,61 @@ around if needed." ("C-c f r" . recentf-open-files) ("C-c x" . execute-extended-command)) -(use-feature ido - :demand - :bind - (:map ido-common-completion-map - ([escape] . minibuffer-keyboard-quit) - ("DEL" . b/ido-backspace)) - :config - (require 'delsel) - (defun b/ido-backspace () - "Forward to `backward-delete-char'. On error (read-only), quit." - (interactive) - (condition-case nil - (backward-delete-char 1) - (error - (minibuffer-keyboard-quit)))) - (ido-mode 1) - (ido-everywhere 1) - :custom - (ido-enable-flex-matching t) - (ido-max-window-height 10) - (ido-use-virtual-buffers t)) +(comment + (use-feature ido + :demand + :bind + (:map ido-common-completion-map + ([escape] . minibuffer-keyboard-quit) + ("DEL" . b/ido-backspace)) + :config + (require 'delsel) + (defun b/ido-backspace () + "Forward to `backward-delete-char'. On error (read-only), quit." + (interactive) + (condition-case nil + (backward-delete-char 1) + (error + (minibuffer-keyboard-quit)))) + (ido-mode 1) + (ido-everywhere 1) + :custom + (ido-enable-flex-matching t) + ;; (ido-enable-regexp t) + ;; (ido-enable-prefix t) + (ido-max-window-height 10) + (ido-use-virtual-buffers t)) + + (use-package ido-vertical-mode + :defer 0.3 + :config + (ido-vertical-mode 1) + :custom + (ido-vertical-define-keys 'C-n-C-p-up-and-down) + (ido-vertical-show-count t)) -(use-package ido-vertical-mode - :defer 0.3 - :config - (ido-vertical-mode 1) - :custom - (ido-vertical-define-keys 'C-n-C-p-up-and-down) - (ido-vertical-show-count t)) + (use-package ido-completing-read+ + :defer 0.3 + :after ido + :config + (ido-ubiquitous-mode 1)) -(use-package ido-completing-read+ - :defer 0.3 - :after ido - :config - (ido-ubiquitous-mode 1)) + (use-package crm-custom + :defer 0.3 + :config + (crm-custom-mode 1)) + + (use-feature icomplete + :defer 0.3 + :config + (icomplete-mode 1))) (use-package amx :defer 0.3 :config (amx-mode)) -(use-package crm-custom - :defer 0.3 - :config - (crm-custom-mode 1)) - -(use-feature icomplete - :defer 0.3 - :config - (icomplete-mode 1)) - (use-package ivy - :disabled :defer 0.3 :bind (:map ivy-minibuffer-map @@ -998,7 +1015,7 @@ around if needed." ("DEL" . ivy-backward-delete-char)) :config (setq ivy-wrap t - ivy-height 14 + ;; ivy-height 14 ivy-use-virtual-buffers t ivy-virtual-abbreviate 'abbreviate ivy-count-format "%d/%d ") @@ -1016,32 +1033,30 @@ This function is intended for use with `ivy-ignore-buffers'." (add-to-list 'ivy-ignore-buffers 'b/ivy-ignore-buffer-p) (ivy-mode 1) - ;; :custom-face - ;; (ivy-minibuffer-match-face-2 ((t (:background "#e99ce8" :weight semi-bold)))) - ;; (ivy-minibuffer-match-face-3 ((t (:background "#bbbbff" :weight semi-bold)))) - ;; (ivy-minibuffer-match-face-4 ((t (:background "#ffbbff" :weight semi-bold)))) -) + :custom-face + (ivy-minibuffer-match-face-1 ((t (:background "#eeeeee")))) + (ivy-minibuffer-match-face-2 ((t (:background "#e7e7e7" :weight bold)))) + (ivy-minibuffer-match-face-3 ((t (:background "light goldenrod" :weight semi-bold)))) + (ivy-minibuffer-match-face-4 ((t (:background "misty rose" :weight semi-bold)))) + (ivy-current-match ((((class color) (background light)) + :background "#d7d7d7" :foreground "black") + (((class color) (background dark)) + :background "#65a7e2" :foreground "black")))) (use-package swiper - :commands (swiper swiper-isearch) - :bind (;; ("C-s" . swiper-isearch) - ;; ("C-r" . swiper) - ("C-S-s" . swiper-isearch))) + :demand + :after ivy + :bind (("C-S-s" . swiper-isearch))) (use-package counsel - :commands (counsel-linux-app)) - ;; :bind (([remap execute-extended-command] . counsel-M-x) - ;; ([remap find-file] . counsel-find-file) - ;; ("C-c f ." . counsel-find-file) - ;; ("C-c f l" . counsel-find-library) - ;; ("C-c f r" . counsel-recentf) - ;; ("C-c x" . counsel-M-x) - ;; :map minibuffer-local-map - ;; ("C-r" . counsel-minibuffer-history)) - ;; :config - ;; (counsel-mode 1) - ;; (defalias 'locate #'counsel-locate) - ;; ) + :demand + :after ivy + :bind (("C-c f r" . counsel-recentf) + :map minibuffer-local-map + ("C-r" . counsel-minibuffer-history)) + :config + (counsel-mode 1) + (defalias 'locate #'counsel-locate)) (comment (use-package helm @@ -1086,7 +1101,8 @@ This function is intended for use with `ivy-ignore-buffers'." ("C-S-l" . b/eshell-clear) ("M-r" . counsel-esh-history) ;; ([tab] . company-complete) - )) + :map eshell-hist-mode-map + ("M-r" . counsel-esh-history))) :hook (eshell-mode . b/eshell-setup) :custom @@ -1324,7 +1340,9 @@ This function is intended for use with `ivy-ignore-buffers'." :bind (:map company-active-map ([tab] . company-complete-common-or-cycle) - ([escape] . company-abort)) + ([escape] . company-abort) + ("C-p" . company-select-previous-or-abort) + ("C-n" . company-select-next-or-abort)) :custom (company-minimum-prefix-length 1) (company-selection-wrap-around t) @@ -1672,10 +1690,10 @@ This function is intended for use with `ivy-ignore-buffers'." ;; prefixes for global prefixes and minor modes "C-c @" "outline" "C-c !" "flycheck" - "C-c 8" "typo" - "C-c 8 -" "typo/dashes" - "C-c 8 <" "typo/left-brackets" - "C-c 8 >" "typo/right-brackets" + ;; "C-c 8" "typo" + ;; "C-c 8 -" "typo/dashes" + ;; "C-c 8 <" "typo/left-brackets" + ;; "C-c 8 >" "typo/right-brackets" "C-x RET" "coding system" "C-x 8" "unicode" "C-x @" "event modifiers" @@ -1774,7 +1792,7 @@ This function is intended for use with `ivy-ignore-buffers'." (advice-add 'magit-branch-and-checkout :after #'my-projectile-invalidate-cache))) :custom - ;; (projectile-completion-system 'ivy) + (projectile-completion-system 'ivy) (projectile-mode-line-prefix " proj")) (use-package helpful @@ -1830,12 +1848,19 @@ This function is intended for use with `ivy-ignore-buffers'." ;; easily type pretty quotes & other typography, like ‘’“”-–—«»‹› (use-package typo + :disabled :defer 0.5 :config (typo-global-mode 1) :hook (((text-mode erc-mode web-mode) . typo-mode) (tex-mode . (lambda ()(typo-mode -1))))) +(use-feature electric + :disabled + :demand + :config + (electric-quote-mode)) + ;; highlight TODOs in buffers (use-package hl-todo :defer 0.5 @@ -1964,7 +1989,9 @@ This function is intended for use with `ivy-ignore-buffers'." :straight (debbugs :host github :repo "emacs-straight/debbugs" - :files (:defaults "Debbugs.wsdl"))) + :files (:defaults "Debbugs.wsdl")) + :custom + (debbugs-gnu-default-packages '("emacs" "gnuzilla"))) (use-package org-ref :init @@ -1987,18 +2014,20 @@ This function is intended for use with `ivy-ignore-buffers'." (use-feature window :bind - (("C-c w s l" . b/split-window-right) - ("C-c w s j" . b/split-window-below) + (("C-c w e" . (lambda () + (interactive) + (split-window-right) + (other-window 1) + (erc-switch-to-buffer))) + ("C-c w s l" . (lambda () + (interactive) + (split-window-right) + (other-window 1))) + ("C-c w s j" . (lambda () + (interactive) + (split-window-below) + (other-window 1))) ("C-c w q" . quit-window)) - :init - (defun b/split-window-right () - (interactive) - (split-window-right) - (other-window 1)) - (defun b/split-window-below () - (interactive) - (split-window-below) - (other-window 1)) :custom (split-width-threshold 150)) @@ -2150,6 +2179,8 @@ This function is intended for use with `ivy-ignore-buffers'." ;; (: gnus-group-split-fancy "INBOX" t "INBOX") ;; gnu (list ".*<\\(.*\\)\\.\\(non\\)?gnu\\.org>.*" "l.\\1") + ;; gnus + (list ".*<\\(.*\\)\\.gnus\\.org>.*" "l.\\1") ;; *.lists.sr.ht, omitting one dot if present ;; add more \\.?\\([^.]*\\) if needed (list ".*<~\\(.*\\)/\\([^.]*\\)\\.?\\([^.]*\\)\\.lists.sr.ht>.*" "l.~\\1.\\2\\3") @@ -2483,9 +2514,10 @@ https://csclub.uwaterloo.ca/~abandali") :init (add-hook 'dired-mode-hook 'gnus-dired-mode)) -(use-feature gnus-utils - :custom - (gnus-completing-read-function 'gnus-ido-completing-read)) +(comment + (use-feature gnus-utils + :custom + (gnus-completing-read-function 'gnus-ido-completing-read))) (use-feature mm-decode :config @@ -2543,8 +2575,8 @@ https://csclub.uwaterloo.ca/~abandali") :hook (;; (message-setup . mml-secure-message-sign-pgpmime) (message-mode . flyspell-mode) (message-mode . (lambda () - ;; (setq fill-column 65 - ;; message-fill-column 65) + (setq-local fill-column b/fill-column + message-fill-column b/fill-column) (make-local-variable 'company-idle-delay) (setq company-idle-delay 0.2)))) ;; :custom-face @@ -2579,47 +2611,59 @@ https://csclub.uwaterloo.ca/~abandali") ("r" . footnote-renumber-footnotes) ("s" . footnote-set-style))) -(use-package ebdb +(use-package bbdb :demand :after gnus - :bind (:map gnus-group-mode-map ("e" . ebdb)) + :bind (:map gnus-group-mode-map ("e" . bbdb)) :config - (setq ebdb-sources (b/var "ebdb")) - (with-eval-after-load 'swiper - (add-to-list 'swiper-font-lock-exclude 'ebdb-mode t))) + (bbdb-initialize 'gnus 'message) + :custom + (bbdb-complete-mail-allow-cycling t) + (bbdb-user-mail-address-re message-dont-reply-to-names)) -(use-feature ebdb-com - :after ebdb) +(comment + (use-package ebdb + :demand + :after gnus + :bind (:map gnus-group-mode-map ("e" . ebdb)) + :config + (setq ebdb-sources (b/var "ebdb")) + (with-eval-after-load 'swiper + (add-to-list 'swiper-font-lock-exclude 'ebdb-mode t))) -(use-feature ebdb-complete - :after ebdb - :config - ;; (setq ebdb-complete-mail 'capf) - (ebdb-complete-enable)) + (use-feature ebdb-com + :after ebdb) -(use-feature ebdb-message - :demand - :after ebdb) + (use-feature ebdb-complete + :after ebdb + :config + ;; (setq ebdb-complete-mail 'capf) + (ebdb-complete-enable)) -;; (use-package company-ebdb -;; :config -;; (defun company-ebdb--post-complete (_) nil)) + (use-feature ebdb-message + :demand + :after ebdb) -(use-feature ebdb-gnus - :after ebdb - :custom - (ebdb-gnus-window-size 0.3)) + ;; (use-package company-ebdb + ;; :config + ;; (defun company-ebdb--post-complete (_) nil)) -(use-feature ebdb-mua - :demand - :after ebdb - :custom (ebdb-mua-pop-up t)) + (use-feature ebdb-gnus + :after ebdb + :custom + (ebdb-gnus-window-size 0.3)) + + (use-feature ebdb-mua + :demand + :after ebdb + :custom (ebdb-mua-pop-up t)) -;; (use-package ebdb-message -;; :after ebdb) + ;; (use-package ebdb-message + ;; :after ebdb) -;; (use-package ebdb-vcard -;; :after ebdb) + ;; (use-package ebdb-vcard + ;; :after ebdb) + ) (use-package message-x) @@ -2695,7 +2739,7 @@ https://csclub.uwaterloo.ca/~abandali") (use-feature erc-pcomplete :after erc :custom - (erc-pcomplete-nick-postfix ",")) + (erc-pcomplete-nick-postfix ", ")) (use-feature erc-track :after erc