3 ms·
Here is a very specific tip for doing literate programming with org-mode: Usually you put a code block like this in the .org file and generate the actual sourc
by phba 2y ago
Here is a very specific tip for doing literate programming with org-mode:
Usually you put a code block like this in the .org file and generate the actual source file with M-x org-babel-tangle.
#+begin_src emacs-lisp :tangle "init.el"
(setq make-backup-files nil)
#+end_src
The file name doesn't have to be a string constant, you can also call an Elisp function: (the org-prefix is recommended or you will have issues with HTML export)
#+begin_src emacs-lisp :tangle (org-my-tangle)
(setq make-backup-files nil)
#+end_src
The function could look like this: ("no" means don't tangle this block)
(defun org-my-tangle ()
(if my-flag
"init.el"
"no"))
Or like this: (a more complex example using named, optional parameters)
(defun org-my-tangle (&rest args)
(let ((file (or (plist-get args :file) "init.el"))
(sys (plist-get args :sys)))
(if (or (null sys)
(eq sys system-type))
file
"no")))
This will tangle to init.el on any system:
#+begin_src emacs-lisp :tangle (org-my-tangle)
(setq make-backup-files nil)
#+end_src
This will tangle to init.el on Linux:
#+begin_src emacs-lisp :tangle (org-my-tangle :sys 'gnu/linux)
(setq make-backup-files nil)
#+end_src
This will tangle to foo.el on Windows:
#+begin_src emacs-lisp :tangle (org-my-tangle :file "foo.el" :sys 'windows-nt)
(setq make-backup-files nil)
#+end_src
I use this approach for example to generate different Emacs configurations for different platforms and use cases (private, work, ...) all from a single org file.
- Wonnk13 2y agoI would love to integrate my lsp setup into Org babel and get completions when writing code in org babel blocks.