(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
#+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=.
#+begin_src emacs-lisp
(use-package org
+ :defer 3
:config
(setq org-src-tab-acts-natively t
org-src-preserve-indentation nil
org-edit-src-content-indentation 0
org-email-link-description-format "Email %c: %s" ; %.30s
org-log-done 'time)
+ (add-to-list 'org-structure-template-alist '("L" . "src emacs-lisp") t)
:bind (:map org-mode-map ("M-L" . org-insert-last-stored-link))
:hook ((org-mode . org-indent-mode)
(org-mode . auto-fill-mode)
(org-latex-packages-alist '(("" "listings") ("" "color"))))
(use-package ox-latex
+ :after ox
:config
(setq org-latex-listings 'listings
;; org-latex-prefer-user-labels t
("\\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
#+begin_src emacs-lisp
(use-package magit
- :defer t
+ :defer 2
:bind
(("s-g" . magit-status)
:prefix-map amin--magit-prefix-map
("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
#+begin_src emacs-lisp
(use-package eshell
+ :defer t
:commands eshell
:config
(eval-when-compile (defvar eshell-prompt-regexp))
#+begin_src emacs-lisp
(use-package ibuffer
+ :defer t
:bind
(("C-x C-b" . ibuffer-other-window)
("C-c b B" . ibuffer-other-window)
#+begin_src emacs-lisp
(use-package outline
+ :defer t
:hook (prog-mode . outline-minor-mode)
:bind
(:map
(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))
#+begin_src emacs-lisp
(use-package company
- :defer 5
+ :defer 2
:bind
(:map company-active-map
([tab] . company-complete-common-or-cycle)
* Syntax and spell checking
#+begin_src emacs-lisp
(use-package flycheck
+ :defer 3
:hook (prog-mode . flycheck-mode)
:bind
(:map flycheck-mode-map
;; http://endlessparentheses.com/ispell-and-apostrophes.html
(use-package ispell
+ :defer 3
:config
;; ’ can be part of a word
(setq ispell-local-dictionary-alist
#+begin_src emacs-lisp
(use-package alloy-mode
+ :defer t
:config (setq alloy-basic-offset 2))
#+end_src
#+begin_src emacs-lisp
(use-package proof-site ; Proof General
+ :defer t
:load-path "lib/proof-site/generic/")
#+end_src
#+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
#+begin_src emacs-lisp
(use-package haskell-mode
+ :defer t
:config
(setq haskell-indentation-layout-offset 4
haskell-indentation-left-offset 4
#+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))
*** [[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]]
#+begin_src emacs-lisp
(use-package sgml-mode
+ :defer t
:config
(setq sgml-basic-offset 2))
#+end_src
#+begin_src emacs-lisp
(use-package css-mode
+ :defer t
:config
(setq css-indent-offset 2))
#+end_src
#+begin_src emacs-lisp
(use-package web-mode
+ :defer t
:mode "\\.html\\'"
:config
(setq-every! 2
#+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
#+begin_src emacs-lisp
(use-package nix-mode
+ :defer t
:mode "\\.nix\\'")
#+end_src
: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)
#+begin_src emacs-lisp
(use-package projectile
- :defer 5
+ :defer 2
:bind-keymap ("C-c p" . projectile-command-map)
:config
(projectile-mode)
#+begin_src emacs-lisp
(use-package helpful
+ :defer 1
:bind
(;; ("C-h F" . helpful-function)
("C-h f" . helpful-callable)
#+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]]
#+begin_src emacs-lisp
(use-package unkillable-scratch
+ :defer 3
:config
(unkillable-scratch 1)
:custom
#+begin_src emacs-lisp
(use-package boxquote
+ :defer 3
:bind
(:prefix-map amin--boxquote-prefix-map
:prefix "C-c q"
#+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)
)
#+begin_src emacs-lisp
(use-package pdf-tools
+ :defer t
:magic ("%PDF" . pdf-view-mode)
:config
(setq pdf-view-resize-factor 1.05)
#+begin_src emacs-lisp
(use-package typo
+ :defer 2
:config
(typo-global-mode 1)
:hook (text-mode . typo-mode))
(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
+
+** shrink-path
+
+#+begin_src emacs-lisp
+(use-package shrink-path
+ :after eshell
+ :config
+ (setq eshell-prompt-regexp "\\(.*\n\\)*λ "
+ eshell-prompt-function #'+eshell/prompt)
+
+ (defun +eshell/prompt ()
+ (let ((base/dir (shrink-path-prompt default-directory)))
+ (concat (propertize (car base/dir)
+ 'face 'font-lock-comment-face)
+ (propertize (cdr base/dir)
+ 'face 'font-lock-constant-face)
+ (propertize (+eshell--current-git-branch)
+ 'face 'font-lock-function-name-face)
+ "\n"
+ (propertize "λ" 'face 'eshell-prompt-face)
+ ;; needed for the input text to not have prompt face
+ (propertize " " 'face 'default))))
+
+ (defun +eshell--current-git-branch ()
+ (let ((branch (car (loop for match in (split-string (shell-command-to-string "git branch") "\n")
+ when (string-match "^\*" match)
+ collect match))))
+ (if (not (eq branch nil))
+ (concat " " (substring branch 2))
+ ""))))
+#+end_src
+
+** magithub
+
+For when I /have to/ use GH.
+
+#+begin_src emacs-lisp
+(use-package magithub
+ :after magit
+ :config
+ (magithub-feature-autoinject t)
+ (setq magithub-clone-default-directory "~/src/git"))
+#+end_src
+
* Email
#+begin_src emacs-lisp
(nnimap-user "abandali@uwaterloo.ca")))
gnus-message-archive-group "nnimap:Sent"
gnus-parameters
- '(;; ("amin"
- ;; (display . 20))
- ("gnu.*"
- ;; (display . 50)
- (gcc-self . t))
- ;; ("uwaterloo"
- ;; (display . [unread]))
- )
+ '(("gnu.*"
+ (gcc-self . t)))
+ gnus-large-newsgroup 50
gnus-home-directory (no-littering-expand-var-file-name "gnus/")
gnus-directory (concat gnus-home-directory "news/")
message-directory (concat gnus-home-directory "mail/")
mml-secure-openpgp-sign-with-sender t))
#+end_src
+** footnote
+
+Convenient footnotes in =message-mode=.
+
+#+begin_src emacs-lisp
+(use-package footnote
+ :after message
+ :bind
+ (:map message-mode-map
+ :prefix-map amin--footnote-prefix-map
+ :prefix "C-c f"
+ ("a" . footnote-add-footnote)
+ ("b" . footnote-back-to-message)
+ ("c" . footnote-cycle-style)
+ ("d" . footnote-delete-footnote)
+ ("g" . footnote-goto-footnote)
+ ("r" . footnote-renumber-footnotes)
+ ("s" . footnote-set-style))
+ :config
+ (setq footnote-start-tag ""
+ footnote-end-tag ""
+ footnote-style 'unicode))
+#+end_src
+
** supercite
#+begin_src emacs-lisp :tangle no