emacs-prelude/modules/prelude-literate-programming.el
2022-06-13 09:44:05 +03:00

100 lines
2.6 KiB
EmacsLisp

;;; prelude-literate-programming.el --- Emacs Prelude: Literate Programming Support
;;
;; Author: Koustubh Sinkar
;; Version: 1.0.0
;; Keywords: literate programming
;; This file is not part of GNU Emacs.
;;; Commentary:
;; Prelude configuration for literate programming
;;; License:
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License
;; as published by the Free Software Foundation; either version 3
;; of the License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Code:
(defvar prelude-ipynb-packages
'(code-cells ; file mode for code-cells
ein ; Emacs Ipython Notebook (Jupyter Client)
elpy ; emacs python development environment
))
(defvar prelude-ob-packages
'(ob-async ; asynchronous execution of code-blocks
ob-ipython ; for python and ipython
ob-tmux ; for shell
ob-deno ; for javascript
ob-typescript
))
(prelude-require-packages
(append prelude-ipynb-packages prelude-ob-packages))
(setq prelude-ob-loader-list
'((python . t)
(ipython . t)
(shell . t)
(js . t)
(typescript . t)
;; Include other languages here...
))
;; Run/highlight code using babel in org-mode
(org-babel-do-load-languages
'org-babel-load-languages prelude-ob-loader-list)
;; Syntax highlight in #+BEGIN_SRC blocks
(setq org-src-fontify-natively t)
;; Don't prompt before running code in org
(setq org-confirm-babel-evaluate nil)
;; Fix an incompatibility between the ob-async and ob-ipython packages
(setq ob-async-no-async-languages-alist '("ipython"))
(defvar org-babel-language-list
'(ob-cfengine3
ob-clojurescript
ob-coffee
ob-dao
ob-diagrams
ob-elixir
ob-elm
ob-go
ob-graphql
ob-http
ob-ipython
ob-julia-vterm
ob-kotlin
ob-mongo
ob-prolog
ob-restclient
ob-rust
ob-sml
ob-sql-mode
ob-translate
ob-typescript
ob-uart
))
;;; TODO Write a function to enable org-babel for each function
(provide 'prelude-literate-programming)
;;; prelude-literate-programming.el ends here