#+title: Setup Fschl Org Configuration #+PROPERTY: header-args:emacs-lisp :tangle ./fschl-org.el :mkdirp yes * Basic configuration ** Additional Packages #+begin_src emacs-lisp ;;; fschl-org.el -- Fschl Crafted Emacs user customization file -*- lexical-binding: t; -*- ;; This file is generated from fschl-org.org. If you want to edit the ;; configuration, DO NOT edit fschl-org.el, edit fsch-org.org, instead. ;;(add-to-list 'package-selected-packages 'org-roam) (add-to-list 'package-selected-packages 'ox-latex) (add-to-list 'package-selected-packages 'ox-koma-letter) (add-to-list 'package-selected-packages 'ox-moderncv) (package-install-selected-packages :noconfirm) #+end_src ** Configure Org-Roam #+begin_src emacs-lisp ;;(setq org-roam-directory (file-truename "~/org-roam")) ;;(org-roam-db-autosync-mode) #+end_src ** Setup Org-mode Key Map #+begin_src emacs-lisp (keymap-global-set "C-c c" #'org-capture) (keymap-global-set "C-c l" #'org-store-link) (global-set-key (kbd "") #'org-agenda) (global-set-key (kbd "") #'org-cycle-agenda-files) #+end_src ** Setup Agenda Files #+begin_src emacs-lisp (setq org-default-notes-file "~/Documents/Org/tasks.org") (setq org-agenda-files (quote ("~/Documents/Org/tasks.org" "~/Documents/Org/journal.org" "~/Documents/Org/private.org" "~/Documents/Org/projects.org" "~/Documents/Org/birthdays.org"))) #+end_src Add Week to Calendar #+begin_src emacs-lisp (setq calendar-week-start-day 1) (setq calendar-intermonth-text '(propertize (format "%2d" (car (calendar-iso-from-absolute (calendar-absolute-from-gregorian (list month day year))))) 'font-lock-face 'font-lock-warning-face)) (setq calendar-intermonth-header (propertize "KW" ; or e.g. "Wk" 'font-lock-face 'font-lock-keyword-face)) #+end_src #+begin_src emacs-lisp (setq org-todo-keywords (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)") (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "PHONE" "MEETING")))) (setq org-todo-keyword-faces (quote (("TODO" :foreground "red" :weight bold) ("NEXT" :foreground "blue" :weight bold) ("DONE" :foreground "forest green" :weight bold) ("WAITING" :foreground "orange" :weight bold) ("HOLD" :foreground "magenta" :weight bold) ("CANCELLED" :foreground "forest green" :weight bold) ("MEETING" :foreground "forest green" :weight bold) ("PHONE" :foreground "forest green" :weight bold)))) #+end_src ** Setup Capture Templates - https://orgmode.org/manual/Template-elements.html - https://orgmode.org/manual/Template-expansion.html *** Export Letter #+begin_src emacs-lisp (eval-after-load 'ox '(require 'ox-koma-letter)) (eval-after-load 'ox '(require 'ox-moderncv)) (eval-after-load 'ox-koma-letter '(progn (add-to-list 'org-latex-classes '("Brief-de-modern" "\\documentclass\[Brief-de-modern\]\{scrlttr2\} \[DEFAULT-PACKAGES] \[PACKAGES] \[EXTRA]")) ;; \\usepackage[english]{babel} ;; \\setkomavar{frombank}{(1234)\\,567\\,890} (setq org-koma-letter-default-class "Brief-de-modern"))) #+end_src *** Capture Templates #+begin_src emacs-lisp (setq org-capture-templates '(("t" "todo list item" entry (file+olp+datetree "~/Documents/Org/tasks.org") "* TODO %?\n SCHEDULED: %^T" :tree-type month ) ("T" "todo list item with source" entry (file+olp+datetree "~/Documents/Org/tasks.org") "* TODO %?\n %a \n SCHEDULED: %^T \n %^G \n" :tree-type month ) ("r" "Todo research some website/software" entry (file+olp+datetree "~/Documents/Org/tasks.org") "* TODO %?\n SCHEDULED: %^T \n %^L \n" :tree-type month ) ; ("l" "letter to Documents/letters/" ; entry (file fschl/create-org-letter) ; "* Preamble :noexport: ;# #+TITLE: ? ;# #+DATE: ; ;#+SUBJECT: Betreff des Briefs ; ;#+LCO: Absender-Frieder ;# #+LCO: Absender-Marcelle ;# #+LCO: Absender-FamilieSchlesier ;#+LCO: Brief-de-modern ;#+STARTUP: showall ; ;* To-address :to: ; ;# * From :from: ; ;* Sehr geehrte Damen und Herren, ;? ; ;* Mit freundlichen Grüßen, :closing: ; ;Frieder Schlesier" ; ) ("m" "Schedule a meeting" entry (file+headline "~/Documents/Org/tasks.org") "* MEETING %?\n SCHEDULED: %^T\n %a" ) ("p" "Schedule a phone call" entry (file+headline "~/Documents/Org/tasks.org") "* PHONE %?\n SCHEDULED: %^T\\n %a" ) ("a" "Articles: keep notes of online articles" entry (file+datetree "~/Documents/Org/journal.org") "* %? \n%x \n %u\n- $?" :tree-type month :kill-buffer t :empty-lines-before 1) ) ) #+end_src ** TODO not sure if we actually need this #+begin_src emacs-lisp (setq org-ref-default-bibliography '("~/Documents/references/references.bib") org-ref-pdf-directory "~/Documents/references/" org-ref-bibliography-notes "~/Documents/references/notes.org") #+end_src ** Auto-tangle on save Whenever you edit =init.org= in Emacs and save it, it updates =init.el= in the same directory. See the [[https://orgmode.org/manual/Extracting-Source-Code.html][Org Manual]] for details and alternatives. #+begin_src emacs-lisp ;; Tangle the code blocks to fschl-org.el on save. (defun org-babel-tangle-config () (when (string-equal (buffer-file-name) (expand-file-name "fschl-org.org" user-emacs-directory)) ;; Dynamic scoping to the rescue (let ((org-confirm-babel-evaluate nil)) (org-babel-tangle)))) (add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook #'org-babel-tangle-config))) #+end_src