X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/3e70dc4a8024eb181f9d94b9199d4b1059982ca2..54c1fbaca23737a86679f767c0c9dcac48bde74f:/init.org diff --git a/init.org b/init.org index d8ea5c1..d4da17d 100644 --- a/init.org +++ b/init.org @@ -355,7 +355,7 @@ in my shell. (mapc #'disable-theme custom-enabled-themes)) #+end_src -** Server +** COMMENT Server Start server if not already running. Alternatively, can be done by issuing =emacs --daemon= in the terminal, which can be automated with @@ -367,10 +367,11 @@ See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.htm #+begin_src emacs-lisp (use-package server + :defer 1 :config (or (server-running-p) (server-mode))) #+end_src -** Unicode support +** COMMENT Unicode support Font stack with better unicode support, around =Ubuntu Mono= and =Hack=. @@ -700,6 +701,7 @@ In short, my favourite way of life. #+begin_src emacs-lisp (use-package org + :defer 3 :config (setq org-src-tab-acts-natively t org-src-preserve-indentation nil @@ -714,6 +716,7 @@ In short, my favourite way of life. (org-latex-packages-alist '(("" "listings") ("" "color")))) (use-package ox-latex + :after ox :config (setq org-latex-listings 'listings ;; org-latex-prefer-user-labels t @@ -729,9 +732,11 @@ In short, my favourite way of life. ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) t)) -(use-package ox-beamer) +(use-package ox-beamer + :after ox) (use-package orgalist + :after message :hook (message-mode . orgalist-mode)) #+end_src @@ -793,7 +798,7 @@ Not just how I do git, but /the/ way to do git. #+begin_src emacs-lisp (use-package magit - :defer t + :defer 2 :bind (("s-g" . magit-status) :prefix-map amin--magit-prefix-map @@ -867,7 +872,6 @@ There's no way I could top that, so I won't attempt to. ("s-r" . counsel-recentf) ("C-c x" . counsel-M-x) ("C-c f ." . counsel-find-file) - ("C-c f r" . counsel-recentf) :map minibuffer-local-map ("C-r" . counsel-minibuffer-history)) :config @@ -879,6 +883,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package eshell + :defer t :commands eshell :config (eval-when-compile (defvar eshell-prompt-regexp)) @@ -906,6 +911,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package ibuffer + :defer t :bind (("C-x C-b" . ibuffer-other-window) ("C-c b B" . ibuffer-other-window) @@ -969,6 +975,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package outline + :defer t :hook (prog-mode . outline-minor-mode) :bind (:map @@ -1037,7 +1044,7 @@ TODO: break this giant source block down into individual org sections. (add-hook 'prog-mode-hook #'indicate-buffer-boundaries-left)) (use-package recentf - :demand t + :defer 0.5 :config (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:") (setq recentf-max-saved-items 40)) @@ -1078,7 +1085,7 @@ TODO: break this giant source block down into individual org sections. #+begin_src emacs-lisp (use-package company - :defer 5 + :defer 2 :bind (:map company-active-map ([tab] . company-complete-common-or-cycle) @@ -1097,6 +1104,7 @@ TODO: break this giant source block down into individual org sections. * Syntax and spell checking #+begin_src emacs-lisp (use-package flycheck + :defer 3 :hook (prog-mode . flycheck-mode) :bind (:map flycheck-mode-map @@ -1111,6 +1119,7 @@ TODO: break this giant source block down into individual org sections. ;; http://endlessparentheses.com/ispell-and-apostrophes.html (use-package ispell + :defer 3 :config ;; ’ can be part of a word (setq ispell-local-dictionary-alist @@ -1140,6 +1149,7 @@ TODO: break this giant source block down into individual org sections. #+begin_src emacs-lisp (use-package alloy-mode + :defer t :config (setq alloy-basic-offset 2)) #+end_src @@ -1147,6 +1157,7 @@ TODO: break this giant source block down into individual org sections. #+begin_src emacs-lisp (use-package proof-site ; Proof General + :defer t :load-path "lib/proof-site/generic/") #+end_src @@ -1155,12 +1166,17 @@ TODO: break this giant source block down into individual org sections. #+begin_src emacs-lisp (eval-when-compile (defvar lean-mode-map)) (use-package lean-mode - :defer 2 + :defer 1 :bind (:map lean-mode-map ("S-SPC" . company-complete)) :config (require 'lean-input) - (setq default-input-method "Lean")) + (setq default-input-method "Lean" + lean-input-tweak-all '(lean-input-compose + (lean-input-prepend "/") + (lean-input-nonempty)) + lean-input-user-translations '(("/" "/"))) + (lean-input-setup)) #+end_src ** Haskell @@ -1169,6 +1185,7 @@ TODO: break this giant source block down into individual org sections. #+begin_src emacs-lisp (use-package haskell-mode + :defer t :config (setq haskell-indentation-layout-offset 4 haskell-indentation-left-offset 4 @@ -1192,6 +1209,7 @@ executable from [[https://github.com/mpickering/apply-refact][apply-refact]]. #+begin_src emacs-lisp (use-package hlint-refactor + :after haskell-mode :bind (:map hlint-refactor-mode-map ("C-c l b" . hlint-refactor-refactor-buffer) ("C-c l r" . hlint-refactor-refactor-at-point)) @@ -1201,7 +1219,8 @@ executable from [[https://github.com/mpickering/apply-refact][apply-refact]]. *** [[https://github.com/flycheck/flycheck-haskell][flycheck-haskell]] #+begin_src emacs-lisp -(use-package flycheck-haskell) +(use-package flycheck-haskell + :after haskell-mode) #+end_src *** [[https://github.com/ndmitchell/hlint/blob/20e116a043f2073c57b17b24ae6364b5e433ba7e/data/hs-lint.el][hs-lint.el]] @@ -1355,6 +1374,7 @@ instead. #+begin_src emacs-lisp (use-package sgml-mode + :defer t :config (setq sgml-basic-offset 2)) #+end_src @@ -1363,6 +1383,7 @@ instead. #+begin_src emacs-lisp (use-package css-mode + :defer t :config (setq css-indent-offset 2)) #+end_src @@ -1371,6 +1392,7 @@ instead. #+begin_src emacs-lisp (use-package web-mode + :defer t :mode "\\.html\\'" :config (setq-every! 2 @@ -1383,6 +1405,7 @@ instead. #+begin_src emacs-lisp (use-package emmet-mode + :after (:any web-mode css-mode sgml-mode) :bind* (("C-)" . emmet-next-edit-point) ("C-(" . emmet-prev-edit-point)) :config @@ -1395,6 +1418,7 @@ instead. #+begin_src emacs-lisp (use-package nix-mode + :defer t :mode "\\.nix\\'") #+end_src @@ -1493,30 +1517,25 @@ Emacs package that displays available keybindings in popup :config (which-key-mode)) #+end_src -** [[https://github.com/seagle0128/doom-modeline][doom-modeline]] +** [[https://github.com/Malabarba/smart-mode-line][smart-mode-line]] #+begin_src emacs-lisp -(use-package doom-modeline - :demand t - :config (setq doom-modeline-height 32) - :hook (after-init . doom-modeline-init)) -#+end_src - -** [[https://github.com/maio/eink-emacs][eink-theme]] - -#+begin_src emacs-lisp -(setq doom-modeline-bar-width 5) -(load-theme 'eink t) +(use-package smart-mode-line + :config + (sml/setup) + ;; (sml/apply-theme 'light) + (remove-hook 'display-time-hook 'sml/propertize-time-string)) #+end_src ** [[https://github.com/bbatsov/crux][crux]] #+begin_src emacs-lisp (use-package crux + :defer 1 :bind (("C-c d" . crux-duplicate-current-line-or-region) ("C-c M-d" . crux-duplicate-and-comment-current-line-or-region) ("C-c b K" . crux-kill-other-buffers) - ("C-c f c" . crux-copy-file-preserve-attributes) + ("C-c f C" . crux-copy-file-preserve-attributes) ("C-c f D" . crux-delete-file-and-buffer) ("C-c f R" . crux-rename-file-and-buffer) ("C-S-j" . crux-top-join-line) @@ -1537,7 +1556,7 @@ Emacs package that displays available keybindings in popup #+begin_src emacs-lisp (use-package projectile - :defer 5 + :defer 2 :bind-keymap ("C-c p" . projectile-command-map) :config (projectile-mode) @@ -1558,6 +1577,7 @@ Emacs package that displays available keybindings in popup #+begin_src emacs-lisp (use-package helpful + :defer 1 :bind (;; ("C-h F" . helpful-function) ("C-h f" . helpful-callable) @@ -1582,9 +1602,10 @@ Emacs package that displays available keybindings in popup #+begin_src emacs-lisp (use-package shell-pop - :custom - (shell-pop-universal-key "C-c e") - (shell-pop-shell-type '("eshell" "*eshell*" (lambda nil (eshell))))) + :defer 1 + :init + (setq shell-pop-universal-key "C-c e" + shell-pop-shell-type '("eshell" "*eshell*" (lambda nil (eshell))))) #+end_src ** [[https://github.com/EricCrosson/unkillable-scratch][unkillable-scratch]] @@ -1593,6 +1614,7 @@ Make =*scratch*= and =*Messages*= unkillable. #+begin_src emacs-lisp (use-package unkillable-scratch + :defer 3 :config (unkillable-scratch 1) :custom @@ -1609,6 +1631,7 @@ Make =*scratch*= and =*Messages*= unkillable. #+begin_src emacs-lisp (use-package boxquote + :defer 3 :bind (:prefix-map amin--boxquote-prefix-map :prefix "C-c q" @@ -1640,7 +1663,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package highlight-indent-guides - :demand t + :defer 3 :hook ((prog-mode . highlight-indent-guides-mode) ;; (org-mode . highlight-indent-guides-mode) ) @@ -1657,6 +1680,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package pdf-tools + :defer t :magic ("%PDF" . pdf-view-mode) :config (setq pdf-view-resize-factor 1.05) @@ -1681,6 +1705,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package typo + :defer 2 :config (typo-global-mode 1) :hook (text-mode . typo-mode)) @@ -1748,6 +1773,15 @@ Hopefully temporary. (setq alert-default-style 'notifier)) #+end_src +** hl-todo + +#+begin_src emacs-lisp +(use-package hl-todo + :defer 4 + :config + (global-hl-todo-mode)) +#+end_src + * Email #+begin_src emacs-lisp @@ -1759,21 +1793,25 @@ Hopefully temporary. ** Gnus #+begin_src emacs-lisp -(setq amin-gnus-init-file (no-littering-expand-etc-file-name "gnus")) +(setq + amin-gnus-init-file (no-littering-expand-etc-file-name "gnus") + mail-user-agent 'gnus-user-agent + read-mail-command 'gnus) (use-package gnus - :bind ("s-m" . gnus) + :bind (("s-m" . gnus) + ("s-M" . gnus-unplugged)) :init (setq - gnus-select-method - '(nnimap "amin" + gnus-select-method '(nnnil "") + gnus-secondary-select-methods + '((nnimap "amin" (nnimap-stream plain) (nnimap-address "127.0.0.1") (nnimap-server-port 143) (nnimap-authenticator plain) (nnimap-user "amin@aminb.org")) - gnus-secondary-select-methods - '((nnimap "uwaterloo" + (nnimap "uwaterloo" (nnimap-stream plain) (nnimap-address "127.0.0.1") (nnimap-server-port 143) @@ -1781,13 +1819,13 @@ Hopefully temporary. (nnimap-user "abandali@uwaterloo.ca"))) gnus-message-archive-group "nnimap:Sent" gnus-parameters - '(("amin" - (display . 20)) - ("uwaterloo" - (display . 20))) + '(("gnu.*" + (gcc-self . t))) + gnus-large-newsgroup 50 gnus-home-directory (no-littering-expand-var-file-name "gnus/") - gnus-directory (no-littering-expand-var-file-name "gnus/News/") - message-directory amin-maildir + gnus-directory (concat gnus-home-directory "news/") + message-directory (concat gnus-home-directory "mail/") + nndraft-directory (concat gnus-home-directory "drafts/") gnus-save-newsrc-file nil gnus-read-newsrc-file nil gnus-interactive-exit nil @@ -1797,12 +1835,12 @@ Hopefully temporary. :config (setq gnus-visible-headers - (concat gnus-visible-headers "\\|^List-Id:\\|^X-RT-Originator:") + (concat gnus-visible-headers "\\|^List-Id:\\|^X-RT-Originator:\\|^User-Agent:") gnus-sorted-header-list '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Followup-To:" "^To:" "^Cc:" "X-RT-Originator" "^Newsgroups:" "List-Id:" "^Organization:" - "^Date:") + "^User-Agent:" "^Date:") ;; local-lapsed article dates ;; from https://www.emacswiki.org/emacs/GnusFormatting#toc11 gnus-article-date-headers '(user-defined) @@ -1830,66 +1868,38 @@ Hopefully temporary. ("w" . gnus-summary-wide-reply) ("v" . gnus-summary-show-raw-article)) :config - (setq gnus-extra-headers (append gnus-extra-headers - '(List-Id X-RT-Originator))) (bind-keys :map gnus-summary-mode-map ("r" . gnus-summary-reply-with-original) ("R" . gnus-summary-wide-reply-with-original) ("M-L" . org-store-link))) -(use-package nnmail +(use-package gnus-msg :config - (setq nnmail-extra-headers (append nnmail-extra-headers - '(List-Id X-RT-Originator)))) - -(use-package gnus-group + (setq gnus-posting-styles + '((".*" + (address "amin@aminb.org")) + ("gnu.*" + (address "bandali@gnu.org")) + ("nnimap\\+uwaterloo:.*" + (address "abandali@uwaterloo.ca") + (gcc "\"nnimap+uwaterloo:Sent Items\""))))) + +(use-package gnus-topic :hook (gnus-group-mode . gnus-topic-mode)) -(use-package mm-decode +(use-package gnus-agent :config - (setq mm-discouraged-alternatives '("text/html" "text/richtext"))) -#+end_src + (setq gnus-agent-synchronize-flags 'ask) + :hook (gnus-group-mode . gnus-agent-mode)) -** gnus-alias +(use-package gnus-group + :config + (setq gnus-permanently-visible-groups "\\((INBOX\\|gnu$\\)")) -#+begin_src emacs-lisp -(use-package gnus-alias - :commands (gnus-alias-determine-identity - gnus-alias-select-identity) - :bind (:map message-mode-map - ("s-i" . gnus-alias-select-identity)) +(use-package mm-decode :config - (setq - gnus-alias-default-identity "amin" - gnus-alias-identity-alist - '(("amin" - nil ;; Does not refer to any other identity - "Amin Bandali " - nil ;; Organization - nil ;; extra headers - nil ;; extra body text - nil) ;; signature file - ("gnu" - nil - "Amin Bandali " - nil - nil - nil - nil) - ("uw" - nil - "Amin Bandali " - nil - (("Gcc" . "\"nnimap+uwaterloo:Sent Items\"")) - nil - nil)) - gnus-alias-identity-rules - '(("amin" ("Delivered-To" "" + nil ;; Organization + nil ;; extra headers + nil ;; extra body text + nil) ;; signature file + ("gnu" + nil + "Amin Bandali " + nil + nil + nil + nil) + ("uw" + nil + "Amin Bandali " + nil + (("Gcc" . "\"nnimap+uwaterloo:Sent Items\"")) + nil + nil)) + gnus-alias-identity-rules + '(("amin" ("Delivered-To" "