Add basic support for Literate Programming (#1370)
This commit is contained in:
parent
109a04d62a
commit
debb2d511f
4 changed files with 118 additions and 0 deletions
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
|
|
||||||
|
* Add a module to enable Literate Programming
|
||||||
* Add a Racket module.
|
* Add a Racket module.
|
||||||
* Add a Lua module.
|
* Add a Lua module.
|
||||||
* Auto-install `racket-mode` if needed.
|
* Auto-install `racket-mode` if needed.
|
||||||
|
|
17
docs/modules/literate-programming.md
Normal file
17
docs/modules/literate-programming.md
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Prelude Literate Programming
|
||||||
|
|
||||||
|
Prelude's `prelude-literate-programming` module enables some
|
||||||
|
additional functionality for `org-mode` - the parent mode the native
|
||||||
|
markdown language of Emacs.
|
||||||
|
|
||||||
|
It also enables viewing and interaction of Python Notebooks within Emacs.
|
||||||
|
|
||||||
|
Here are some features it provides:
|
||||||
|
|
||||||
|
* syntax highlighting of code blocks in Emacs Orgmode
|
||||||
|
* executing code blocks and printing their output in the org file
|
||||||
|
* viewing python notebooks within Emacs
|
||||||
|
* Using Emacs to interact with python notebooks and other remote compute engines
|
||||||
|
|
||||||
|
It makes an attempt to enable [literate programming](http://www.literateprogramming.com/knuthweb.pdf)
|
||||||
|
from within emacs
|
99
modules/prelude-literate-programming.el
Normal file
99
modules/prelude-literate-programming.el
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
;;; 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
|
|
@ -79,6 +79,7 @@
|
||||||
(require 'prelude-js)
|
(require 'prelude-js)
|
||||||
;; (require 'prelude-latex)
|
;; (require 'prelude-latex)
|
||||||
(require 'prelude-lisp) ;; Common setup for Lisp-like languages
|
(require 'prelude-lisp) ;; Common setup for Lisp-like languages
|
||||||
|
;; (require 'prelude-literate-programming) ;; Setup for Literate Programming
|
||||||
(require 'prelude-lsp) ;; Base setup for the Language Server Protocol
|
(require 'prelude-lsp) ;; Base setup for the Language Server Protocol
|
||||||
;; (require 'prelude-lua)
|
;; (require 'prelude-lua)
|
||||||
;; (require 'prelude-ocaml)
|
;; (require 'prelude-ocaml)
|
||||||
|
|
Loading…
Reference in a new issue