;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- (map! :n "" #'org-agenda-list) (map! :n "" #'org-drill) (map! "C-M-+" #'doom/increase-font-size) (map! "C-#" #'comment-line) (evil-define-key 'normal dired-mode-map (kbd "DEL") 'dired-up-directory) ;; 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) ;; Fonts (setq doom-font (font-spec :family "IBM Plex Mono" :size 18 :weight 'medium)) (setq doom-variable-pitch-font (font-spec :family "IBM Plex Serif" :size 18 :weight 'medium)) (setq variable-pitch (font-spec :family "IBM Plex Serif" :size 18 :weight 'medium)) ;; Dashboard (defun my-weebery-is-always-greater () (let* ((banner '("EMACS " "███▄ ▄███▓ ▒█████ ▒█████ ▓█████▄ " "▓██▒▀█▀ ██▒▒██▒ ██▒▒██▒ ██▒▒██▀ ██▌" "▓██ ▓██░▒██░ ██▒▒██░ ██▒░██ █▌" "▒██ ▒██ ▒██ ██░▒██ ██░░▓█▄ ▌" "▒██▒ ░██▒░ ████▓▒░░ ████▓▒░░▒████▓ " "░ ▒░ ░ ░░ ▒░▒░▒░ ░ ▒░▒░▒░ ▒▒▓ ▒ " "░ ░ ░ ░ ▒ ▒░ ░ ▒ ▒░ ░ ▒ ▒ " "░ ░ ░ ░ ░ ▒ ░ ░ ░ ▒ ░ ░ ░ " " ░ ░ ░ ░ ░ ░ " " ░ ")) (longest-line (apply #'max (mapcar #'length banner)))) (put-text-property (point) (dolist (line banner (point)) (insert (+doom-dashboard--center +doom-dashboard--width (concat line (make-string (max 0 (- longest-line (length line))) 32))) "\n")) 'face 'doom-dashboard-banner))) (setq +doom-dashboard-ascii-banner-fn #'my-weebery-is-always-greater) (remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu) (remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer) (remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-loaded) ;; 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 . doom-gruvbox-light) (dark . doom-gruvbox))) ;; 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 (("" . heaven-and-hell-toggle-theme))) (setq +user-org-path "~/Notes/Org") (defun org-path (filename) (expand-file-name filename +user-org-path)) (after! org (map! :map org-mode-map :localleader "g s" #'org-habit-stats-view-habit-at-point) (setq org-directory +user-org-path org-src-tab-acts-natively t org-todo-keywords '((sequence "TODO(t)" "|" "DONE(d)") (sequence "THIS(T)" "EXAMPLE")))) (add-hook! 'org-mode-hook '(olivetti-mode (lambda () (display-line-numbers-mode -1)))) (add-hook! 'org-after-todo-state-change-hook '(org-habit-stats-update-properties)) (add-to-list 'org-modules 'org-habit) (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 "\n"))))) ;; Org Export (add-hook 'org-export-before-processing-functions 'my-org-inline-css-hook) (after! org (setq +org-capture-notes-file (org-path "Notes.org") +org-capture-todo-file (org-path "Todo.org") +org-capture-journal-file (org-path "Journal.org") +org-capture-cooking-file (org-path "Cooking.org") +org-capture-nepali-file (org-path "Nepali.org"))) (after! org (setq org-capture-templates '(("t" "Personal Todo" entry (file +org-capture-todo-file) "* TODO %?\n" :prepend t) ("r" "Recipe" entry (file+headline +org-capture-cooking-file "Unsorted") "* NEVERMADE %? :PROPERTIES: :Author: :Source: :Sent_by: :Yield: :Prep_Time: :Cook_Time: :Total_Time: :Cost: :Description: :URL: :Added: %u :END: - [ ] Ingredient 1 1. First Step") ("n" "Nepali") ("nw" "Nepali Word" entry (file+headline +org-capture-nepali-file "Nepali Words") "* %^{Nepali Word} :drill:\n%\\1\n** Answer\n%^{Translation}" :prepend t :immediate-finish t) ("j" "Daily Journal" entry (file+olp+datetree +org-capture-journal-file) "* %U %?\n" :prepend t)))) (after! org (setq ;; org-agenda-spillover-skip-function '(org-agenda-skip-entry-if 'todo 'done) org-agenda-show-all-dates t org-agenda-span 4 org-agenda-start-day "+0d" org-agenda-tag-filter-preset '("-drill") 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))) (after! doom-modeline (setq doom-modeline-battery t) (setq doom-modeline-major-mode-icon t)) (add-hook 'doom-after-init-hook #'display-battery-mode) (add-hook 'doom-after-init-hook #'display-time-mode) (after! evil-snipe (setq evil-snipe-scope 'whole-visible)) (add-hook 'org-mode-hook #'hl-todo-mode) (after! hl-todo (setq hl-todo-keyword-faces '(("TODO" warning 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) ("THIS" font-lock-constant-face bold)))) (setq +notmuch-home-function (lambda () (notmuch-search "folder:INBOX"))) (setq +notmuch-sync-backend 'offlineimap) (use-package! nov :mode ("\\.epub\\'" . nov-mode) :config (setq nov-text-width 70)) (add-hook! 'nov-mode-hook '(olivetti-mode)) (after! olivetti (setq olivetti-body-width 70)) (use-package! org-auto-tangle :defer t :config (setq org-auto-tangle-default nil) :hook (org-mode . org-auto-tangle-mode)) (after! org-drill (setq org-drill-scope 'agenda)) (after! org-noter (setq org-noter-notes-search-path '("~/Notes/Org")) (setq org-noter-always-create-frame nil) (setq org-noter-doc-split-fraction '(0.75 . 0.75)) (setq org-noter-default-notes-file-names '())) (after! org-roam (setq org-roam-directory "~/Notes/Org/Roam") (setq org-roam-dailies-directory "Daily")) (drag-stuff-global-mode t)