dotfiles/config/dot_config/doom/README.org

2.9 KiB

Emacs Config

Emacs Config

;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-

;; Basic User Settings
(setq user-full-name "Jonathan Jenne"
      user-mail-address "johnnie@posteo.de")

;; Org Path
(setq +user-org-path "~/Notes/Org")
(defun org-path (filename) (expand-file-name filename +user-org-path))

;; Default Shell
;; Useful if default system shell is not bash
(setq shell-file-name (executable-find "bash"))

;; Custom keybindings
(map! :n "<f12>" #'org-agenda-list)
(map! "C-M-+" #'doom/increase-font-size)
(map! "C-#" #'comment-line)

;; Display Line numbers
(setq display-line-numbers-type t)

;; Set Emacs theme
(setq doom-theme 'catppuccin)

;; Dashboard
(setq dashboard-startup-banner nil)

;; Org-Mode
(add-to-list 'org-modules 'org-habit)

(after! org (setq org-directory +user-org-path
                  org-src-tab-acts-natively t))

;; Org Capture
(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-travel-journal-file (org-path "Travel.org")))

(after! org (setq org-capture-templates
      '(("t" "Personal todo" entry
         (file+headline +org-capture-todo-file "Inbox")
         "* TODO %?\n" :prepend t)

        ("n" "Personal notes" entry
         (file+headline +org-capture-notes-file "Inbox")
         "* %u %?\n" :prepend t)

        ("j" "Journal entries")

        ("jt" "Travelling Journal" entry
         (file+headline +org-capture-travel-journal-file "Inbox")
         "* %u %?\n" :prepend t)

        ("jj" "Journal" entry
         (file+olp+datetree +org-capture-journal-file)
         "* %U %?\n" :prepend t))))

;; Org-Agenda
(after! org (setq
        org-agenda-show-all-dates nil
        org-agenda-span 4
        org-agenda-start-day "+0d"
        org-agenda-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)))

;; Org-Auto-Tangle
(setq org-auto-tangle-default nil)

;; Dired
(evil-define-key 'normal dired-mode-map
  (kbd "DEL") 'dired-up-directory)

;; Hooks
(add-hook 'org-mode-hook #'org-modern-mode)
(add-hook 'org-agenda-finalize-hook #'org-modern-agenda)

;; Package Configuration
(use-package! org-auto-tangle
  :defer t
  :hook (org-mode . org-auto-tangle-mode))