~renamed some stuff and moved around sections

This commit is contained in:
AChavali
2019-12-31 13:42:06 +00:00
parent b8f5f8c5c2
commit b49bbba7bc

View File

@@ -4,8 +4,8 @@
My setup to produce a literate configuration. Allows me to write org files all My setup to produce a literate configuration. Allows me to write org files all
around the /doom-private-dir/ and access them. Also shaved like 0.2s off my around the /doom-private-dir/ and access them. Also shaved like 0.2s off my
loading time. loading time.
* Variables * Constants
Initialise some basic constants for where stuff is Initialise some basic constants for where stuff is.
#+BEGIN_SRC elisp #+BEGIN_SRC elisp
(setq oreodave/literate/bin-dir (expand-file-name (concat doom-private-dir "bin/"))) (setq oreodave/literate/bin-dir (expand-file-name (concat doom-private-dir "bin/")))
(setq oreodave/literate/preloaded-files (list "README.org" "modules/config.org" "modules/literate.org")) (setq oreodave/literate/preloaded-files (list "README.org" "modules/config.org" "modules/literate.org"))
@@ -21,6 +21,15 @@ expanded file names.
(let ((parsed-remove-files (map 'list #'(lambda (i) (expand-file-name (concat doom-private-dir i))) remove-files))) (let ((parsed-remove-files (map 'list #'(lambda (i) (expand-file-name (concat doom-private-dir i))) remove-files)))
(remove-if-not #'(lambda (l) (not (member l parsed-remove-files))) files))) (remove-if-not #'(lambda (l) (not (member l parsed-remove-files))) files)))
#+END_SRC #+END_SRC
* Destination for parser
Generate the destination for a literate config org file to parse to, in this
case the bin folder in the private directory
#+BEGIN_SRC elisp
(defun oreodave/literate/destination(SRC)
(replace-regexp-in-string ".*/\\(\\w+\\).org" (expand-file-name (concat oreodave/literate/bin-dir "\\1.el")) SRC))
#+END_SRC
This is not fitted onto the parser because the parser could be fitted to
multiple /differing/ outputs easily if it isn't specified a destination.
* Parser * Parser
First we need to get some sort of parser which can, given a source org file and First we need to get some sort of parser which can, given a source org file and
a destination, parse and produce an Emacs lisp file. We'll copy this from the a destination, parse and produce an Emacs lisp file. We'll copy this from the
@@ -43,31 +52,6 @@ literate module of doom.
(warn (format "Problem with tanging %S to %S" SRC DEST))) (warn (format "Problem with tanging %S to %S" SRC DEST)))
(kill-buffer output)))))) (kill-buffer output))))))
#+END_SRC #+END_SRC
* Destination for parser
Generate the destination for a literate config org file to parse to, in this
case the bin folder in the private directory
#+BEGIN_SRC elisp
(defun oreodave/literate/destination(SRC)
(replace-regexp-in-string ".*/\\(\\w+\\).org" (expand-file-name (concat oreodave/literate/bin-dir "\\1.el")) SRC))
#+END_SRC
This is not fitted onto the parser because the parser could be fitted to
multiple /differing/ outputs easily if it isn't specified a destination.
* Procedure for all files
A procedure that parses all the org files in a given directory into Emacs lisp
files, using the parser function made. Assume all org files in the "location"
directory contribute to the config.
#+BEGIN_SRC elisp
(defun oreodave/literate/tangle-all (&optional location)
(or location (setq location doom-private-dir))
(interactive)
(message "Starting compilation process")
(let ((files (directory-files-recursively location ".org")))
(dolist (file files)
(message "Compiling and parsing %s" file)
(oreodave/literate/tangle file (oreodave/literate/destination file)))))
#+END_SRC
The location is not set because this function could be easily programmed to use
multiple /differing/ sources to produce the config.
* Hook on save * Hook on save
Now we need to make a hook function that, when the current buffer is an org file Now we need to make a hook function that, when the current buffer is an org file
in the doom directory, will run the literate config procedure from above. Use in the doom directory, will run the literate config procedure from above. Use
@@ -84,6 +68,22 @@ literate contents.
(after! org (after! org
(add-hook 'after-save-hook #'oreodave/literate/compile-hook)) (add-hook 'after-save-hook #'oreodave/literate/compile-hook))
#+END_SRC #+END_SRC
* Procedure for all files
A procedure that parses all the org files in a given directory into Emacs lisp
files, using the parser function made. Assume all org files in the "location"
directory contribute to the config.
#+BEGIN_SRC elisp
(defun oreodave/literate/tangle-all (&optional location)
(or location (setq location doom-private-dir))
(interactive)
(message "Starting compilation process")
(let ((files (directory-files-recursively location ".org")))
(dolist (file files)
(message "Compiling and parsing %s" file)
(oreodave/literate/tangle file (oreodave/literate/destination file)))))
#+END_SRC
The location is not set because this function could be easily programmed to use
multiple /differing/ sources to produce the config.
* Load configuration * Load configuration
Final step of the literate cycle: load the config for the first time. Final step of the literate cycle: load the config for the first time.
#+BEGIN_SRC elisp #+BEGIN_SRC elisp