dotfiles/config/dot_config/doom/config.el

110 lines
4.2 KiB
EmacsLisp

;;; $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)
;; 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)
(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-feather-light)
(dark . doom-feather-dark))) ;; 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)))
(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)
(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")
("jj" "Daily Journal" entry
(file+olp+datetree +org-capture-journal-file)
"* %U %?\n" :prepend t)
("jt" "Travel Journal" entry
(file+headline +org-capture-journal-file "Travel")
"* %U %?\n" :prepend t))))
(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)))
(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))))
(use-package! org-auto-tangle
:defer t
:config (setq org-auto-tangle-default nil)
:hook (org-mode . org-auto-tangle-mode))
(after! doom-modeline
(setq doom-modeline-battery t)
(setq doom-modeline-time t)
(setq doom-modeline-major-mode-icon t))