X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/926d8456ad069f6e26a925476a727c35ed8adceb..bfbda9c581acbac69c9727e68d7a3cf729fc7a2c:/.emacs.d/init.el?ds=sidebyside diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 0577716..4736a73 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -184,6 +184,9 @@ ;;; Initial setup +(defvar b/exwm-p (string= (system-name) "jirud") + "Whether or not we will be using `exwm'.") + ;; keep ~/.emacs.d clean (use-package no-littering :demand @@ -394,7 +397,7 @@ For disabling the behaviour for certain buffers and/or modes." ;; time and battery in mode-line (use-feature time - :disabled + :if b/exwm-p :demand :config (display-time-mode) @@ -403,7 +406,7 @@ For disabling the behaviour for certain buffers and/or modes." (display-time-format "%a %b %-e, %-l:%M%P")) (use-feature battery - :disabled + :if b/exwm-p :demand :config (display-battery-mode) @@ -568,7 +571,7 @@ For disabling the behaviour for certain buffers and/or modes." ;;; Essential packages (use-package exwm - :disabled + :if b/exwm-p :demand :config ;; make class name the buffer name, truncating beyond 60 characters @@ -764,18 +767,7 @@ around if needed." :config (exwm-randr-enable) :custom - (exwm-randr-workspace-monitor-plist '(1 "VGA-1")) - :hook - (exwm-randr-screen-change . (lambda () - (let ((xrandr - (string-join - '("xrandr" - "--output VGA-1" - "--same-as LVDS-1" - "--auto") - " "))) - (start-process-shell-command - "xrandr" nil xrandr))))) + (exwm-randr-workspace-monitor-plist '(1 "VGA-1"))) (use-feature exwm-systemtray :demand @@ -1128,7 +1120,8 @@ This function is intended for use with `ivy-ignore-buffers'." (use-feature dired :config - (setq dired-listing-switches "-alh" + (setq dired-dwim-target t + dired-listing-switches "-alh" ls-lisp-use-insert-directory-program nil) ;; easily diff 2 marked files @@ -1256,7 +1249,6 @@ This function is intended for use with `ivy-ignore-buffers'." :mode "\\.bashrc$") (use-package company - :defer 0.6 :bind (:map company-active-map ([tab] . company-complete-common-or-cycle) @@ -1334,7 +1326,8 @@ This function is intended for use with `ivy-ignore-buffers'." (use-package alloy-mode :straight (:host github :repo "dwwmmn/alloy-mode") :mode "\\.als\\'" - :config (setq alloy-basic-offset 2)) + :config (setq alloy-basic-offset 2) + :hook (alloy-mode . (lambda () (setq-local indent-tabs-mode nil)))) (eval-when-compile (defvar lean-mode-map)) (use-package lean-mode @@ -1515,10 +1508,10 @@ This function is intended for use with `ivy-ignore-buffers'." (load-theme 'tangomod t) (use-package smart-mode-line - :disabled :commands (sml/apply-theme) :demand :config + (setq sml/theme 'tangomod) (sml/setup) (smart-mode-line-enable)) @@ -1537,6 +1530,7 @@ This function is intended for use with `ivy-ignore-buffers'." (load-theme 'solarized-light t)) (use-package moody + :disabled :demand :config (setq x-underline-at-descent-line t) @@ -1550,6 +1544,11 @@ This function is intended for use with `ivy-ignore-buffers'." (moody-replace-mode-line-buffer-identification) (moody-replace-vc-mode)) +(use-package mini-modeline + :disabled + :demand + :config (mini-modeline-mode)) + (defvar b/org-mode-font-lock-keywords '(("[ \t]*\\(#\\+\\(BEGIN\\|END\\|begin\\|end\\)_\\(\\S-+\\)\\)[ \t]*\\([^\n:]*\\)" (1 '(:foreground "#5a5b5a" :background "#292b2b") t) ; directive @@ -1562,18 +1561,22 @@ This function is intended for use with `ivy-ignore-buffers'." (interactive) (mapc #'disable-theme custom-enabled-themes) (load-theme 'tangomod t) - ;; (sml/apply-theme 'automatic) + (sml/apply-theme 'tangomod) (font-lock-remove-keywords - 'org-mode b/org-mode-font-lock-keywords)) + 'org-mode b/org-mode-font-lock-keywords) + (when (featurep 'exwm-systemtray) + (exwm-systemtray--refresh))) (defun b/lights-off () "Go dark." (interactive) (mapc #'disable-theme custom-enabled-themes) (load-theme 'doom-one t) - ;; (sml/apply-theme 'automatic) + (sml/apply-theme 'automatic) (font-lock-add-keywords - 'org-mode b/org-mode-font-lock-keywords t)) + 'org-mode b/org-mode-font-lock-keywords t) + (when (featurep 'exwm-systemtray) + (exwm-systemtray--refresh))) (bind-keys ("C-c t d" . b/lights-off) @@ -1596,11 +1599,18 @@ This function is intended for use with `ivy-ignore-buffers'." "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" "C-x a" "abbrev/expand" "C-x r" "rectangle/register/bookmark" + "C-x t" "tabs" "C-x v" "version control" + "C-x X" "edebug" + "C-x C-a" "edebug" + "C-x C-k" "kmacro" ;; prefixes for my personal bindings + "C-c &" "yasnippet" "C-c a" "applications" "C-c a e" "erc" "C-c a o" "org" @@ -1617,6 +1627,10 @@ This function is intended for use with `ivy-ignore-buffers'." "C-c P s" "projectile/search" "C-c P x" "projectile/execute" "C-c P 4" "projectile/other-window" + "C-c p" "package management" + "C-c ps" "straight" + "C-c psa" "all" + "C-c psp" "package" "C-c q" "boxquote" "C-c t" "themes" ;; "s-O" "outline" @@ -1896,11 +1910,18 @@ This function is intended for use with `ivy-ignore-buffers'." (use-feature window :bind - (("C-c w " . split-window-right) - ("C-c w " . split-window-below) - ("C-c w s l" . split-window-right) - ("C-c w s j" . split-window-below) - ("C-c w q" . quit-window)) + (("C-c w s l" . b/split-window-right) + ("C-c w s j" . b/split-window-below) + ("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)) @@ -1930,7 +1951,9 @@ This function is intended for use with `ivy-ignore-buffers'." ("" . pdf-history-forward) ("" . pdf-history-forward) ("" . pdf-history-forward) - ("M-RET" . image-previous-line)) + ("M-RET" . image-previous-line) + ("C-s" . isearch-forward) + ("s s" . isearch-forward)) :config (pdf-tools-install nil t) :custom (pdf-view-resize-factor 1.05)) @@ -1987,6 +2010,29 @@ This function is intended for use with `ivy-ignore-buffers'." :custom (nnreddit-python-command "python3")) +(use-package hyperbole + :disabled + :straight (hyperbole + :host github :repo "rswgnu/hyperbole" + :files ("*.el" ("kotl" "kotl/*.el") + "DEMO" "man/*.info" "man/*.texi"))) + +(use-package oddmuse-curl + :straight (:host github :repo "kensanata/oddmuse-curl") + :config + (setq + oddmuse-wikis + (append + '(("EmacsConf" "https://emacsconf.org" utf-8 "question" nil) + ("EmacsConf 2019" "https://emacsconf.org/2019" utf-8 "question" nil)) + oddmuse-wikis)) + :custom + (oddmuse-username "bandali")) + +(use-package debpaste + :custom + (debpaste-paste-is-hidden t)) + ;;; Email (with Gnus) @@ -2009,41 +2055,41 @@ This function is intended for use with `ivy-ignore-buffers'." gnus-select-method '(nnnil "") gnus-secondary-select-methods '((nnimap "shemshak" - (nnimap-stream plain) - (nnimap-address "127.0.0.1") - (nnimap-server-port 143) - (nnimap-authenticator plain) - (nnimap-user "amin@shemshak.local")) + (nnimap-stream plain) + (nnimap-address "127.0.0.1") + (nnimap-server-port 143) + (nnimap-authenticator plain) + (nnimap-user "amin@shemshak.local")) (nnimap "gnu" - (nnimap-stream plain) - (nnimap-address "127.0.0.1") - (nnimap-server-port 143) - (nnimap-authenticator plain) - (nnimap-user "bandali@gnu.local") - (nnimap-inbox "INBOX") - (nnimap-split-methods 'nnimap-split-fancy) - (nnimap-split-fancy (| - ;; (: gnus-registry-split-fancy-with-parent) - ;; (: gnus-group-split-fancy "INBOX" t "INBOX") - ;; gnu - (list ".*<\\(.*\\)\\.\\(non\\)?gnu\\.org>.*" "l.\\1") - ;; *.lists.sr.ht, omitting one dot if present - ;; add more \\.?\\([^.]*\\) if needed - (list ".*<~\\(.*\\)/\\([^.]*\\)\\.?\\([^.]*\\)\\.lists.sr.ht>.*" "l.~\\1.\\2\\3") - ;; webmasters - (from "webmasters\\(-comment\\)?@gnu\\.org" "webmasters") - ;; other - (list ".*atreus.freelists.org" "l.atreus") - (list ".*deepspec.lists.cs.princeton.edu" "l.deepspec") - ;; (list ".*haskell-art.we.lurk.org" "l.haskell.art") ;d - (list ".*haskell-cafe.haskell.org" "l.haskell-cafe") - ;; (list ".*notmuch.notmuchmail.org" "l.notmuch") ;u - ;; (list ".*dev.lists.parabola.nu" "l.parabola-dev") ;u - ;; ---------------------------------- - ;; legend: (u)nsubscribed | (d)ead - ;; ---------------------------------- - ;; otherwise, leave mail in INBOX - "INBOX"))) + (nnimap-stream plain) + (nnimap-address "127.0.0.1") + (nnimap-server-port 143) + (nnimap-authenticator plain) + (nnimap-user "bandali@gnu.local") + (nnimap-inbox "INBOX") + (nnimap-split-methods 'nnimap-split-fancy) + (nnimap-split-fancy (| + ;; (: gnus-registry-split-fancy-with-parent) + ;; (: gnus-group-split-fancy "INBOX" t "INBOX") + ;; gnu + (list ".*<\\(.*\\)\\.\\(non\\)?gnu\\.org>.*" "l.\\1") + ;; *.lists.sr.ht, omitting one dot if present + ;; add more \\.?\\([^.]*\\) if needed + (list ".*<~\\(.*\\)/\\([^.]*\\)\\.?\\([^.]*\\)\\.lists.sr.ht>.*" "l.~\\1.\\2\\3") + ;; webmasters + (from "webmasters\\(-comment\\)?@gnu\\.org" "webmasters") + ;; other + (list ".*atreus.freelists.org" "l.atreus") + (list ".*deepspec.lists.cs.princeton.edu" "l.deepspec") + ;; (list ".*haskell-art.we.lurk.org" "l.haskell.art") ;d + (list ".*haskell-cafe.haskell.org" "l.haskell-cafe") + ;; (list ".*notmuch.notmuchmail.org" "l.notmuch") ;u + ;; (list ".*dev.lists.parabola.nu" "l.parabola-dev") ;u + ;; ---------------------------------- + ;; legend: (u)nsubscribed | (d)ead + ;; ---------------------------------- + ;; otherwise, leave mail in INBOX + "INBOX"))) (nnimap "uw" (nnimap-stream plain) (nnimap-address "127.0.0.1") @@ -2090,6 +2136,9 @@ This function is intended for use with `ivy-ignore-buffers'." ("l\\.emacs-tangents" (to-address . "emacs-tangents@gnu.org") (to-list . "emacs-tangents@gnu.org")) + ("l\\.emacsconf-committee" + (to-address . "emacsconf-committee@gnu.org") + (to-list . "emacsconf-committee@gnu.org")) ("l\\.emacsconf-discuss" (to-address . "emacsconf-discuss@gnu.org") (to-list . "emacsconf-discuss@gnu.org")) @@ -2268,14 +2317,12 @@ This function is intended for use with `ivy-ignore-buffers'." (use-feature gnus-msg :config - (defvar b/signature "Amin Bandali -Free Software Activist | GNU Webmaster & Volunteer -GPG: BE62 7373 8E61 6D6D 1B3A 08E8 A21A 0202 4881 6103 -https://shemshak.org/~amin") (defvar b/gnu-signature "Amin Bandali -Free Software Activist | GNU Webmaster & Volunteer +Free Software Activist | GNU Maintainer & Webmaster GPG: BE62 7373 8E61 6D6D 1B3A 08E8 A21A 0202 4881 6103 https://bandali.eu.org") + (defvar b/shemshak-signature "Amin Bandali +https://shemshak.org/~amin") (defvar b/uw-signature "Amin Bandali, MMath Student Cheriton School of Computer Science University of Waterloo @@ -2284,30 +2331,36 @@ https://bandali.eu.org") Systems Committee Computer Science Club, University of Waterloo https://csclub.uwaterloo.ca/~abandali") - (setq gnus-posting-styles + (setq gnus-message-replysign t + gnus-posting-styles '((".*" (address "bandali@gnu.org") (signature b/gnu-signature) (eval (set (make-local-variable 'message-user-fqdn) "fencepost.gnu.org"))) + ("nnimap\\+gnu:l\\..*" + (signature nil)) + ((header "subject" "ThankCRM") + (to "webmasters-comment@gnu.org") + (body "") + (eval (setq b/message-cite-say-hi nil))) ("nnimap\\+shemshak:.*" (address "amin@shemshak.org") (body "\nBest,\n") - (signature b/signature) + (signature b/shemshak-signature) (gcc "nnimap+shemshak:Sent") (eval (setq b/message-cite-say-hi t))) - ((header "subject" "ThankCRM") - (to "webmasters-comment@gnu.org") - (body "") - (eval (setq b/message-cite-say-hi nil))) ("nnimap\\+uw:.*" (address "bandali@uwaterloo.ca") + (body "\nBest,\n") (signature b/uw-signature)) ("nnimap\\+uw:INBOX" (gcc "\"nnimap+uw:Sent Items\"")) ("nnimap\\+csc:.*" (address "bandali@csclub.uwaterloo.ca") (signature b/csc-signature) - (gcc "nnimap+csc:Sent"))))) + (gcc "nnimap+csc:Sent")))) + ;; :hook (gnus-message-setup . mml-secure-message-sign) + ) (use-feature gnus-topic :hook (gnus-group-mode . gnus-topic-mode) @@ -2446,7 +2499,6 @@ https://csclub.uwaterloo.ca/~abandali") (defun company-ebdb--post-complete (_) nil)) (use-feature ebdb-gnus - :demand :after ebdb :custom (ebdb-gnus-window-size 0.3))