blob: 01b1e5a1276817ad9278305ad115a9fa7ec48847 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
;;; org-babel-config.el --- Org Babel/Tempo Config -*- lexical-binding: t; -*-
;;; Commentary:
;; All Org-Babel and Org-Tempo Packages, Settings, and Languages.
;;; Code:
;; ------------------------------- Org Babel Core ------------------------------
;; general org babel settings
(use-package ob-core
:ensure nil ;; built-in
:after org
:defer .5
:hook
(org-babel-after-execute-hook . org-redisplay-inline-images) ;; for seeing inline dotgraph images
:config
(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
;; ------------------- 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
(use-package ob-awk
:ensure nil ;; built-in
:defer .5
:after ob-core
:commands
(org-babel-execute:awk
org-babel-expand-body:awk))
(use-package ob-dot
:ensure nil ;; built-in
:defer .5
:after ob-core
: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))))
(use-package ob-emacs-lisp
:ensure nil ;; built-in
:defer .5
:after ob-core
:commands
(org-babel-execute:emacs-lisp
org-babel-expand-body:emacs-lisp))
(use-package ob-latex
:ensure nil ;; built-in
:defer .5
:after ob-core
:commands
(org-babel-execute:latex
org-babel-expand-body:latex))
(use-package ob-python
:ensure nil ;; built-in
:defer .5
:after ob-core
:commands
(org-babel-execute:python
org-babel-variable-assignments:python
org-babel-load-session:python
org-babel-prep-session:python))
(use-package ob-scheme
:ensure nil ;; built-in
:defer .5
:after ob-core
:commands
(org-babel-execute:scheme
org-babel-expand-body:scheme))
;; allows for shell, bash, and fish
(use-package ob-shell
:ensure nil ;; built-in
:defer .5
:after ob-core
:commands
(org-babel-execute:shell
org-babel-prep-session:shell
org-babel-load-session:shell
org-babel-variable-assignments:shell))
(use-package ob-sed
:ensure nil ;; built-in
:defer .5
:after ob-core
:commands (org-babel-execute:sed))
;; --------------------------------- Org-Tempo ---------------------------------
;; expands snippets to babel code blocks using templates
(use-package org-tempo
:defer .5
:ensure nil ;; built-in
:after ob-core
:config
(add-to-list 'org-structure-template-alist '("awk" . "src awk"))
(add-to-list 'org-structure-template-alist '("sed" . "src sed"))
(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 '("py" . "src python"))
(add-to-list 'org-structure-template-alist '("scheme" . "src scheme"))
(add-to-list 'org-structure-template-alist '("shell" . "src shell"))
(add-to-list 'org-structure-template-alist '("yaml" . "src yaml")))
;; requires ob-racket, not yet in repositories
;; (add-to-list 'org-structure-template-alist '("sicp" . "src racket :lang sicp"))
(provide 'org-babel-config)
;;; org-babel-config.el ends here.
|