;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; NOTE: org-mode is required in essentials.el so we use the git instead of the shipped version ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; HTMLIZE: html export for orgmode (straight-use-package 'htmlize) ;; There was a long discussion on reddit that this package slows ;; down the redisplay optimizations of emacs ;; https://old.reddit.com/r/emacs/comments/p9yjgq/turn_off_fontlock_under_cursor/ha6zor6/ ;; ORG-APPEAR: shows emphasis symbols when required (straight-use-package 'org-appear) (setq org-appear-autolinks nil ;;'just-brackets org-appear-autosubmarkers t org-appear-autoentities t org-appear-autokeywords t org-appear-inside-latex t) (add-hook 'org-mode-hook 'org-appear-mode) ;; ORG-DOWNLOAD: insert screenshots on the fly (straight-use-package 'org-download) (require 'org-download) ;; OB-GO: Org babel support for go (straight-use-package 'ob-go) ;; (with-eval-after-load 'ob-go (require 'l-go)) ;; enable highlighting, etc ;; EVIL-ORG: more org bindings (straight-use-package 'evil-org) (add-hook 'org-mode-hook 'evil-org-mode) (with-eval-after-load 'org-mode (evil-org-set-key-theme '(navigation insert textobjects additional calendar))) ;; ORG-SRC: Load language specific configs when fontifying src blocks for languages which ;; configs are dynamically loaded and not present at the time of the fontification process ;; (defun phga/advice-load-config-for-org-src-block-language (lang start end) ;; "Look in `load-path' for a file that provides the feature l-LANG. ;; LANG is the language used by `org-src-font-lock-fontify-block'. ;; START and END are not used by this advice" ;; (ignore-errors (require (intern (concat "l-" lang))))) ;; (advice-add 'org-src-font-lock-fontify-block ;; :before #'phga/advice-load-config-for-org-src-block-language) (defvar phga/org-export-directory) (defun phga/advice-create-and-set-org-export-directory (f extension &optional subtreep pub-dir) "Create and set `phga/org-export-directory' which is used as PUB-DIR in F. F is `org-export-output-file-name' SUBTREEP and EXTENSION are not modified here." (let ((pub-dir (or pub-dir (and (boundp 'phga/org-export-directory) phga/org-export-directory)))) (unless (file-directory-p pub-dir) (make-directory phga/org-export-directory)) (apply f extension subtreep pub-dir '()))) ;; '() is required by apply (advice-add 'org-export-output-file-name :around #'phga/advice-create-and-set-org-export-directory) (setq phga/org-export-directory "./auto") (evil-set-initial-state 'org-agenda-mode 'normal) (add-to-list 'org-export-backends 'md) (setq org-agenda-tags-column org-tags-column org-babel-min-lines-for-block-output 50 org-confirm-babel-evaluate nil ;; Since ORG-Mode 9.1.9 functions inside of (file "FILENAME") are no longer ;; evaluated if the template list is prefixed with ' ;; Solution: use ` to prefix list and ,(concat) to indicate req. evaluation org-duration-format 'h:mm ;; TODO: If you want latex support ;; Latex ;; org-latex-listings 'minted ;; org-latex-listings nil ;; org-latex-packages-alist '(("outputdir=auto" "minted")) ;; org-latex-inputenc-alist '(("utf8" . "utf8x")) ;; org-latex-prefer-user-labels t ;; org-latex-pdf-process ;; '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" ;; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" ;; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f") ;; Export Config org-export-preserve-breaks nil org-export-with-email t org-export-with-sub-superscripts t org-export-in-background nil org-html-htmlize-output-type 'inline-css ;; REQUIRES: y -S plantuml graphviz ;; org-plantuml-jar-path (expand-file-name "/usr/share/java/plantuml/plantuml.jar") ;; Visuals like nice looking headings, fontification (bold, italic, etc.) org-pretty-entities t org-pretty-entities-include-sub-superscripts t org-edit-src-content-indentation 0 org-src-fontify-natively t org-src-tab-acts-natively t org-src-preserve-indentation t org-src-window-setup 'current-window org-use-sub-superscripts '{} org-ellipsis " ↷" org-cycle-separator-lines 0 org-hide-emphasis-markers t ;; Sane defaults when opening new files org-startup-folded nil org-startup-with-inline-images t org-startup-with-latex-preview t org-image-actual-width nil org-blank-before-new-entry '((heading . t) (plain-list-item . nil)) ;; Tags org-tags-column 60 org-fast-tag-selection-include-todo t org-fast-tag-selection-single-key 'expert ;; Todos org-todo-keywords '((sequence "TODO(t)" "|" "DONE(d)") (type "NEXT(n)") (type "MEET(m)") (type "IDEA(i)")) ;; '((type "TODO") ;; ;; (type "DONE") ;; (type "NEXT") ;; (type "IDEA") ;; (type "MEET") ;; (sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)") ;; (sequence "IDEA(i)" "|" "TODO(t)") ;; ) org-todo-keyword-faces '(("TODO" :inherit org-todo :weight bold) ("DONE" :inherit org-done :weight bold) ("NEXT" :weight bold) ("MEET" :weight bold) ("IDEA" :foreground "#cea7f0" :weight bold)) org-use-fast-todo-selection t org-fontify-todo-headline nil org-fontify-done-headline nil) ;; leads to unwanted buffer visits on first clock-in ;; Probably because it tries to scan for clocks in all agenda files ;; org-agenda-files (list org-directory) ;; org-latex-listings 'listings ;; Pretty bullet points (font-lock-add-keywords 'org-mode '(("^ *\\(-\\) " ; change '-' into a unicode bullet (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) (font-lock-add-keywords 'org-mode '(("^ *\\(\\+\\) " ; change '+' into a unicode bullet (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "◦")))))) ;; Get rid of the ,* in code blocks (visually) (font-lock-add-keywords 'org-mode '(("^ *\\(,\\*\\).*" ; change ',*' into * (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "*")))))) (add-hook 'org-babel-after-execute-hook 'org-redisplay-inline-images) ;; Scale of the latex fragments ;; (plist-put org-format-latex-options :scale 1.3) ;; b4 presentation (plist-put org-format-latex-options :scale 2.5) ;; Run/highlight code using babel in org-mode ;; Languages: https://orgmode.org/worg/org-contrib/babel/languages/index.html (setq org-babel-load-languages '((emacs-lisp . t) (lisp . t) (python . t) (js . t) (java . t) (C . t) (sql . t) (calc . t) (perl . t) (shell . t) (plantuml . t) (haskell . t) (go . t))) (org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages) ;; TODO: If you want custom css in your html exports ;; export html with styles ;; (defvar org-style-css "~/sync/mvtn/setup/org.css") ;; (defun my-org-inline-css-hook (exporter) ;; "Insert custom inline css" ;; (when (eq exporter 'html) ;; (let* ((dir (ignore-errors (file-name-directory (buffer-file-name)))) ;; (path (concat dir "style.css")) ;; (homestyle (or (null dir) (null (file-exists-p path)))) ;; (final (if homestyle org-style-css path))) ;; <- set your own style file path ;; (setq org-html-head-include-default-style nil) ;; (setq org-html-head (concat ;; "\n"))))) ;; (add-hook 'org-export-before-processing-hook 'my-org-inline-css-hook) ;; (setq org-html-htmlize-font-prefix "org-") ; default: "org-" ;; TODO: If you want to manage your time with org-mode ;; ORG-CLOCK ;; (setq org-clock-history-length 23 ;; org-clock-in-resume t ;; org-drawers '("PROPERTIES" "LOGBOOK") ;; org-clock-into-drawer t ;; org-clock-out-remove-zero-time-clocks t ;; org-clock-out-when-done t ;; org-clock-persist 'history ;; org-clock-persist-query-resume nil ;; org-clock-auto-clock-resolution 'when-no-clock-is-running ;; org-clock-report-include-clocking-task t) ;; (org-clock-persistence-insinuate) ;; ORG-AGENDA ;; (defvar org-agenda-window-setup) ;; (setq org-agenda-window-setup 'current-window) ;; ORG-DOWNLOAD ;; TODO: Setup for seemless insertion of screenshots (setq org-download-screenshot-file "~/sync/screenshots/tmp/orgcapture.png" org-download-screenshot-method "grim -g $(slurp -b '#000000a0' -c '#00000000') -o %s" org-download-image-attr-list '("#+ATTR_ORG: :width 600") org-download-annotate-function (lambda(link) "")) (setq-default org-download-image-dir "./ORGPICS" ;; KEYBINDINGS (my-leader :states 'normal :definer 'minor-mode :keymaps 'org-src-mode "'" 'org-edit-src-exit) (my-leader :states '(normal visual) :keymaps 'org-mode-map "'" 'org-edit-src-code "SPC p" 'fill-paragraph "SPC i" '(:ignore t :which-key "Insert") "SPC i s" 'org-download-screenshot "SPC i t" 'org-todo "SPC i l" 'org-insert-link "SPC s l" 'org-store-link "SPC t" '(:ignore t :which-key "Toggle") "SPC t i" 'org-toggle-inline-images "SPC t l" 'org-latex-preview ;; "SPC c" '(:ignore t :which-key "C Funktions (clock, execute)") ;; "SPC c i" 'org-clock-in ;; "SPC c o" 'org-clock-out ;; "SPC c l" 'org-clock-in-last "SPC c c" 'org-babel-execute-src-block "SPC r" '(:ignore t :which-key "Remove") "SPC r r" 'org-babel-remove-result "SPC r a" (lambda () (interactive) (org-babel-remove-result-one-or-many t)) "SPC o" 'org-open-at-point "SPC e" 'org-export-dispatch) (provide 'a-orgmode)