emacs/fschl-org.org

5.9 KiB

Setup Fschl Org Configuration

Basic configuration

Additional Packages

;;; 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)

Configure Org-Roam

;;(setq org-roam-directory (file-truename "~/org-roam"))
;;(org-roam-db-autosync-mode)

Setup Org-mode Key Map

(keymap-global-set "C-c c" #'org-capture)
(keymap-global-set "C-c l" #'org-store-link)
(global-set-key (kbd "<f8>") #'org-agenda)
(global-set-key (kbd "<f7>") #'org-cycle-agenda-files)

Setup Agenda Files

  (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")))

Add Week to Calendar

  (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))
  (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))))

Setup Capture Templates

Export Letter

(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")))

Capture Templates

(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/<datetime.org>"
;         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)
        )
      )

TODO not sure if we actually need this

(setq org-ref-default-bibliography '("~/Documents/references/references.bib")
      org-ref-pdf-directory "~/Documents/references/"
      org-ref-bibliography-notes "~/Documents/references/notes.org")

Auto-tangle on save

Whenever you edit init.org in Emacs and save it, it updates init.el in the same directory.

See the Org Manual for details and alternatives.

  ;; 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)))