 ;;; org/org-babel/config.el -*- lexical-binding: t; -*-
 
 (add-hook 'org-load-hook #'+org-babel|init t)
+
+(defvar +org-babel-languages
+  '(calc
+    css
+    emacs-lisp
+    haskell
+    js
+    latex
+    ledger
+    lilypond
+    lisp
+    matlab
+    plantuml
+    python
+    restclient ; ob-restclient
+    ruby
+    rust       ; ob-rust
+    shell
+    sqlite
+    sql-mode   ; ob-sql-mode
+    translate) ; ob-translate
+  "A list of org-babel languages to load.")
 
 (defun +org-babel|init ()
   (setq org-src-fontify-natively t      ; make code pretty

             if (funcall fn (eq (car p) key))
             collect p))

  ;; I prefer C-c C-c for confirming over the default C-c '
  (map! :map org-src-mode-map "C-c C-c" #'org-edit-src-exit)

  (defun +org|src-mode-remove-header ()
    "Remove header-line with keybinding help; I know the keybinds."
    (when header-line-format
      (setq header-line-format nil)))
  (add-hook 'org-src-mode-hook #'+org|src-mode-remove-header))


  (org-babel-do-load-languages
   'org-babel-load-languages
   (cl-loop for sym in +org-babel-languages
            collect (cons sym t)))

  ;; I prefer C-c C-c for confirming over the default C-c '
  (map! :map org-src-mode-map "C-c C-c" #'org-edit-src-exit)

  ;; In a recent update, `org-babel-get-header' was removed from org-mode, which
  ;; is something a fair number of babel plugins use. So until those plugins
