summaryrefslogtreecommitdiff
path: root/modules/org-babel-config.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2024-04-07 13:41:34 -0500
committerCraig Jennings <c@cjennings.net>2024-04-07 13:41:34 -0500
commit754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 (patch)
treef1190704f78f04a2b0b4c977d20fe96a828377f1 /modules/org-babel-config.el
new repository
Diffstat (limited to 'modules/org-babel-config.el')
-rw-r--r--modules/org-babel-config.el88
1 files changed, 88 insertions, 0 deletions
diff --git a/modules/org-babel-config.el b/modules/org-babel-config.el
new file mode 100644
index 00000000..dfb9ca14
--- /dev/null
+++ b/modules/org-babel-config.el
@@ -0,0 +1,88 @@
+;;; org-babel-config.el --- Org Babel/Tempo Config -*- lexical-binding: t; -*-
+
+;;; Commentary:
+;; All Org-Babel and Org-Tempo Packages, Settings, and Languages.
+
+;;; Code:
+
+(with-eval-after-load 'org
+ (require 'ob-core)
+
+ ;; ------------------- Babel Execution Confirmation Toggle -------------------
+ ;; org-babel verifies before each execution
+
+ (defun babel-confirm (flag)
+ "Report the setting of org-confirm-babel-evaluate.
+ If invoked with C-u, toggle the setting."
+ (interactive "P")
+ (if (equal flag '(4))
+ (setq org-confirm-babel-evaluate (not org-confirm-babel-evaluate)))
+ (message "Babel evaluation confirmation is %s"
+ (if org-confirm-babel-evaluate "on" "off")))
+
+ ;; ---------------------------- Org Babel Languages ----------------------------
+ ;; create executable code blocks in a language within org-mode
+
+ ;; (org-babel-do-load-languages
+ ;; 'org-babel-load-languages
+ ;; '((shell . t)))
+
+ (use-package ob-python
+ :ensure nil ;; built-in
+ :defer .5
+ :after org-contrib
+ :commands (org-babel-execute:python))
+
+ (use-package ob-emacs-lisp
+ :ensure nil ;; built-in
+ :defer .5
+ :commands
+ (org-babel-execute:emacs-lisp
+ org-babel-expand-body:emacs-lisp))
+
+ (use-package ob-dot
+ :ensure nil ;; built-in
+ :defer .5
+ :commands
+ (org-babel-execute:dot
+ org-babel-expand-body:dot)
+ :config
+ ;; https://stackoverflow.com/questions/16770868/org-babel-doesnt-load-graphviz-editing-mode-for-dot-sources
+ (add-to-list 'org-src-lang-modes (quote ("dot" . graphviz-dot))))
+
+ ;; --------------------------------- Org-Tempo ---------------------------------
+ ;; expands snippets to babel code blocks using templates
+
+ (use-package org-tempo
+ :defer .5
+ :ensure nil ;; built-in
+ :after org
+ :config
+ (add-to-list 'org-structure-template-alist '("awk" . "src awk"))
+ (add-to-list 'org-structure-template-alist '("bash" . "src bash"))
+ (add-to-list 'org-structure-template-alist '("dot" . "src dot :file temp.png :cmdline -Kdot -Tpng"))
+ (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
+ (add-to-list 'org-structure-template-alist '("json" . "src json"))
+ (add-to-list 'org-structure-template-alist '("latex" . "src latex"))
+ (add-to-list 'org-structure-template-alist '("sicp" . "src racket :lang sicp"))
+ (add-to-list 'org-structure-template-alist '("py" . "src python"))
+ (add-to-list 'org-structure-template-alist '("sh" . "src sh"))
+ (add-to-list 'org-structure-template-alist '("yaml" . "src yaml")))
+
+ ;; ---------------------------- Org Babel Settings ---------------------------
+ ;; general org babel settings
+
+ (setq org-src-fontify-natively t) ;; fontify the code in blocks
+ (setq org-src-tab-acts-natively t) ;; tabs act like in language major mode buffer
+ (setq org-src-window-setup 'current-window) ;; don't split window when source editing wih C-c '
+ (setq org-confirm-babel-evaluate nil) ;; just evaluate the source code
+ (setq org-babel-default-header-args
+ (cons '(:tangle . "yes")
+ (assq-delete-all :tangle org-babel-default-header-args))) ;; default header args for babel
+ (add-hook 'org-babel-after-execute-hook 'org-redisplay-inline-images) ;; for seeing inline dotgraph images
+
+ ) ;; end with-eval-after-load
+
+
+(provide 'org-babel-config)
+;;; org-babel-config.el ends here.