;; -*- lexical-binding: t -*- ;;; General configuration (defvar jao-org-dir (expand-file-name "~/doc/org")) (use-package org :ensure t :demand t :custom ((org-export-backends '(ascii html latex texinfo))) :init (defalias 'jao-open-gnus-frame 'jao-afio-goto-mail) (setq org-adapt-indentation t 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-insert-heading-respect-content nil ;; for C-RET ;; 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 '(bibtex 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)) ;;; Agenda (setq org-agenda-custom-commands '(("j" agenda "" ((org-agenda-ndays 14) (org-agenda-overriding-header " "))) ("w" todo "WAITING" nil) ("W" agenda "" ((org-agenda-ndays 21)))) org-agenda-files (mapcar (lambda (f) (expand-file-name f jao-org-dir)) '("inbox.org" "bigml.org")) org-agenda-block-separator " " org-agenda-breadcrumbs-separator "•" org-agenda-current-time-string "•" ;; "*" ;; '((daily today require-timed) ;; (800 1000 1200 1400 1600 1800 2000) "" "·") org-agenda-hide-tags-regexp ".*" 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 14 org-agenda-start-on-weekday nil org-agenda-time-grid '((daily require-timed) () "" "·") org-agenda-window-setup 'current-window) (defun jao-org-agenda () (interactive) (org-agenda nil "j")) (defun jao-org-agenda-hook () (setq-local cursor-in-non-selected-windows nil)) (add-hook 'org-agenda-mode-hook #'jao-org-agenda-hook) (add-to-list 'display-buffer-alist '("\\*Org Agenda\\*" (display-buffer-reuse-window) (body-function . (lambda (w) (set-window-margins w 2 1))))) ;;; Capture templates (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) ;;; MIME and file apps (setq org-file-apps '((system . mailcap) (".*\\.djvu" . system) (t . emacs))) ;;; Appearance (use-package org-appear :disabled t :ensure t :init (setq org-appear-autolinks nil org-appear-delay 0.0 org-appear-manual-linger t) :hook (org-mode . org-appear-mode)) ;;; Images ;; #+caption: Image caption. ;; #+attr_org: :width 100 ;; [[file:path/to/image.png]] (setq org-startup-indented nil org-pretty-entities nil org-hide-emphasis-markers t org-hide-leading-stars t org-startup-with-inline-images t org-cycle-inline-images-display t org-display-remote-inline-images 'download ;; 'skip 'cache org-image-actual-width '(500)) ;;; LaTeX (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) ;;; Export (minted and pandoc) (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")) (use-package ox-pandoc :after org :ensure t) ;;; Babel and literate programming (setq org-src-window-setup 'other-window) ;; current-window (require 'org-tempo nil t) ;;