Emacs Config
+Table of Contents
+1. Keybindings
++These keybindings extend the default doom bindings, either because the defaults were confusing to me or because the binding did not yet exist. +
+ +Key | +Description | +State | +
---|---|---|
F12 | +Show Org-Agenda | +N | +
Ctrl-Alt-+ | +Increase Font Size | ++ |
Ctrl-# | +Toggle Line Comment | ++ |
F6 | +Toggle Light/Dark Theme | ++ |
Ctrl-c F6 | +Load Default Theme | ++ |
DEL | +Up Directory | +Dired | +
2. Base Config
+;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- + +;; Basic User Settings +(setq user-full-name "Jonathan Jenne" + user-mail-address "johnnie@posteo.de") + +;; Default Shell +;; Useful if default system shell is not bash +(setq shell-file-name (executable-find "bash")) + +;; Display Line numbers +(setq display-line-numbers-type t) + +;; General Keybindings +(map! :n "<f12>" #'org-agenda-list) +(map! "C-M-+" #'doom/increase-font-size) +(map! "C-#" #'comment-line) +(evil-define-key 'normal dired-mode-map + (kbd "DEL") 'dired-up-directory) ++
2.1. Hooks
+;; Org Mode +(add-hook 'org-mode-hook #'org-modern-mode) +(add-hook 'org-mode-hook #'hl-todo-mode) + +;; Org Agenda +(add-hook 'org-agenda-finalize-hook #'org-modern-agenda) + +;; Modeline +(add-hook 'doom-after-init-hook #'display-battery-mode) +(add-hook 'doom-after-init-hook #'display-time-mode) ++
3. Themes
+(use-package! heaven-and-hell + :ensure t + :config + (setq heaven-and-hell-theme-type 'dark) ;; Omit to use light by default + (setq heaven-and-hell-themes + '((light . leuven) + (dark . doom-monokai-octagon))) ;; Themes can be the list: (dark . (tsdh-dark wombat)) + ;; Optionall, load themes without asking for confirmation. + (setq heaven-and-hell-load-theme-no-confirm t) + :hook (after-init . heaven-and-hell-init-hook) + :bind (("C-c <f6>" . heaven-and-hell-load-default-theme) + ("<f6>" . heaven-and-hell-toggle-theme))) ++
4. Org Mode
+4.1. General Settings
+(setq +user-org-path "~/Notes/Org") +(defun org-path (filename) (expand-file-name filename +user-org-path)) + +(after! org (setq org-directory +user-org-path + org-src-tab-acts-natively t)) + +(add-to-list 'org-modules 'org-habit) ++
4.2. Org Export
++ +(after! org ( + ;; TOC Links will lead to errors when attempting + ;; to export to HTML + setq org-export-exclude-tags '("toc"))) + +(defun my-org-inline-css-hook (exporter) + "Insert custom inline css" + (when (eq exporter 'html) + (let* ((dir (ignore-errors (file-name-directory (buffer-file-name)))) + (path (concat dir "style.css")) + (fallback-style (or (null dir) (null (file-exists-p path)))) + (final (if fallback-style "~/.config/doom/style.css" path))) ;; <- set your own style file path + (setq org-html-head-include-default-style t) + (setq org-html-head (concat + "<style type=\"text/css\">\n" + "<!--/*--><![CDATA[/*><!--*/\n" + (with-temp-buffer + (insert-file-contents final) + (buffer-string)) + "/*]]>*/-->\n" + "</style>\n"))))) + +;; Org Export +(add-hook 'org-export-before-processing-hook 'my-org-inline-css-hook) + ++
4.3. Org Agenda
+(after! org (setq + org-agenda-show-all-dates nil + org-agenda-span 4 + org-agenda-start-day "+0d" + org-agenda-spillover-skip-function '(org-agenda-skip-entry-if 'todo 'done) + org-agenda-time-grid + '((daily today require-timed) + (800 1000 1200 1400 1600 1800 2000) + " ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄") + org-agenda-current-time-string + "◀── now ──────────────────────────────────────────────── \\o/" + org-agenda-block-separator ?─ + ;; Consider all org files part of the org-agenda + org-agenda-files (list +user-org-path))) ++
5. Packages
+5.1. hl-todo
+(after! hl-todo (setq hl-todo-keyword-faces '(("TODO" warning bold) + ("FIXME" error bold) + ("EXAMPLE" font-lock-keyword-face bold) + ("HACK" font-lock-constant-face bold) + ("DEPRECATED" font-lock-doc-face bold) + ("NOTE" success bold) + ("BUG" error bold) + ("XXX" font-lock-constant-face bold)))) ++
5.2. org-auto-tangle
+(use-package! org-auto-tangle + :defer t + :config (setq org-auto-tangle-default nil) + :hook (org-mode . org-auto-tangle-mode)) ++
5.3. org-drill
+(after! org-drill + (setq org-drill-scope 'agenda)) ++
5.4. doom-modeline
+(after! doom-modeline + (setq doom-modeline-battery t) + (setq doom-modeline-major-mode-icon t)) ++
5.5. evil-snipe
+(after! evil-snipe (setq evil-snipe-scope 'whole-visible)) ++