#+title: Org (and related) mode configuration * General configuration #+BEGIN_SRC emacs-lisp (use-package org :ensure t :init (setq org-catch-invisible-edits 'smart org-complete-tags-always-offer-all-agenda-tags t org-cycle-separator-lines 0 ;; no blank lines when all colapsed org-deadline-warning-days 14 org-directory jao-org-dir org-default-notes-file (expand-file-name "inbox.org" org-directory) org-ellipsis " .." ;; ↴ org-email-link-description-format "Email %c: %s" org-enforce-todo-dependencies t org-fast-tag-selection-single-key 'expert org-hide-emphasis-markers t org-hide-leading-stars t ;; org-list-demote-modify-bullet '(("+" . "-") ("-" . "+") ("*" . "+")) org-link-frame-setup '((gnus . (lambda (&optional x) (jao-open-gnus-frame))) (file . find-file-other-window)) org-log-done nil org-modules '(bbdb bibtex gnus info eww eshell git-link) org-odd-levels-only t org-outline-path-complete-in-steps nil org-refile-allow-creating-parent-nodes 'confirm org-refile-targets '((nil :maxlevel . 5) (org-agenda-files :maxlevel . 5)) org-refile-use-outline-path 'file org-return-follows-link t org-reverse-note-order t org-special-ctrl-a/e t org-src-fontify-natively t org-startup-folded t org-tag-alist nil org-tags-column -75 org-todo-keywords '((sequence "TODO(t)" "STARTED(s!)" "|" "DONE(d!)") (sequence "REPLY(r)" "WAITING(w!)" "|" "DONE(d!)") (sequence "TOREAD(T)" "READING(R!)" "|" "READ(a!)") (sequence "|" "CANCELLED(x!)" "SOMEDAY(o!)" "DONE(d!)")) org-use-fast-todo-selection t org-use-speed-commands nil ;; t and then ? to see help org-gnus-prefer-web-links nil)) (require 'org) #+END_SRC * Agenda #+begin_src emacs-lisp (setq org-agenda-custom-commands '(("w" todo "WAITING" nil) ("W" agenda "" ((org-agenda-ndays 21)))) org-agenda-files (list jao-org-dir) org-agenda-include-diary t org-agenda-include-inactive-timestamps t org-agenda-inhibit-startup nil org-agenda-restore-windows-after-quit t org-agenda-show-all-dates t org-agenda-skip-deadline-if-done t org-agenda-skip-scheduled-if-done nil org-agenda-span 7 org-agenda-start-on-weekday nil org-agenda-window-setup 'current-window) #+end_src * Capture templates #+BEGIN_SRC emacs-lisp (setq org-capture-templates '(("t" "TODO" entry (file+headline "inbox.org" "Todo") "* TODO %?\n %i%a" :prepend t) ("r" "REPLY" entry (file+headline "inbox.org" "Todo") "* REPLY %:subject%?\n %t\n %i%a" :prepend t) ("a" "Appointment" entry (file+olp "inbox.org" "Appointments") "* %^T %?\n %a" :time-prompt t) ("i" "Inbox note" entry (file+headline "inbox.org" "Notes") "* %a\n %i%?(added on: %u)" :prepend t))) ;; (org-capture-upgrade-templates org-capture-templates) #+END_SRC * MIME and file apps #+BEGIN_SRC emacs-lisp (setq org-file-apps '((system . mailcap) (".*\\.djvu" . system) (t . emacs))) #+END_SRC * Calendar #+BEGIN_SRC emacs-lisp (setq gnus-icalendar-org-capture-file (expand-file-name "inbox.org" org-directory) gnus-icalendar-org-capture-headline '("Appointments")) (eval-after-load "gnus" '(progn (require 'org-agenda) (require 'gnus-icalendar) (gnus-icalendar-org-setup))) #+END_SRC * LaTeX #+begin_src emacs-lisp (use-package org-fragtog :after org :ensure t :hook ((org-mode . org-fragtog-mode))) (require 'org-fragtog) (setq org-format-latex-options `(:foreground default :background ,(if (jao-colors-scheme-dark-p) "black" "white") :scale 1.25 :html-foreground "black" :html-background "Transparent" :html-scale 1.0 :matchers ("begin" "$1" "$" "$$" "\\(" "\\[")) org-preview-latex-image-directory (expand-file-name "~/.emacs.d/cache/ltximg/") org-latex-hyperref-template nil org-highlight-latex-and-related '(latex script entities)) (require 'ox-latex) (add-to-list 'org-latex-classes '("bmlarticle" "\\documentclass{bmlarticle}\n[NO-DEFAULT-PACKAGES]\n[EXTRA]" ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) (use-package cdlatex :ensure t :hook ((org-mode . org-cdlatex-mode)) :diminish ((cdlatex-mode . " £") (org-cdlatex-mode . " £"))) #+end_src * Export (minted) #+begin_src emacs-lisp (setq org-latex-listings 'minted org-latex-packages-alist '(("" "minted")) org-latex-pdf-process '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")) #+end_src * Babel - [[http://cachestocaches.com/2018/6/org-literate-programming][Literate Programming with Org-mode]] - [[http://howardism.org/Technical/Emacs/literate-devops.html][Literate DevOps]] #+begin_src emacs-lisp (setq org-src-window-setup 'other-window) ;; current-window (require 'org-tempo nil t) ;;