[cp-chronometrist] add tangling functions
This commit is contained in:
parent
27673a62e5
commit
1399161e20
|
@ -214,6 +214,45 @@ Return nil (and run `magit-status') if the user answers no."
|
||||||
do (cl-incf count)
|
do (cl-incf count)
|
||||||
finally do (message "%s" count))))
|
finally do (message "%s" count))))
|
||||||
|
|
||||||
|
;; Wrote these two as potential alternatives to `org-babel-tangle',
|
||||||
|
;; which was far slower than I'd like (took around 20s for
|
||||||
|
;; chronometrist.org when I checked during the migration process, and
|
||||||
|
;; 43s after the migration was complete.) These, on the other hand,
|
||||||
|
;; are almost instant, but I don't use them anywhere because I run a
|
||||||
|
;; sed script as a file local variable.
|
||||||
|
(defun chronometrist-tangle ()
|
||||||
|
(goto-char (point-min))
|
||||||
|
(cl-loop with source
|
||||||
|
while (not (eobp))
|
||||||
|
when (looking-at-p (rx (and line-start (zero-or-more blank) "#+BEGIN_SRC emacs-lisp" line-end)))
|
||||||
|
concat (progn
|
||||||
|
(forward-line 1)
|
||||||
|
(buffer-substring-no-properties
|
||||||
|
(point)
|
||||||
|
(cl-loop while (not (eobp))
|
||||||
|
if (looking-at-p (rx (and line-start
|
||||||
|
(zero-or-more blank)
|
||||||
|
"#+END_SRC"
|
||||||
|
line-end)))
|
||||||
|
do (cl-return (point))
|
||||||
|
else do (forward-line 1)))) into source
|
||||||
|
do (forward-line 1)
|
||||||
|
finally do
|
||||||
|
(with-current-buffer (find-file-noselect "chronometrist.el")
|
||||||
|
(delete-region (point-min) (point-max))
|
||||||
|
(insert source)
|
||||||
|
(save-buffer))))
|
||||||
|
|
||||||
|
(defun chronometrist-tangle-sed ()
|
||||||
|
(let* ((file-path (buffer-file-name
|
||||||
|
(current-buffer)))
|
||||||
|
(base (file-name-base file-path)))
|
||||||
|
(when (equal "chronometrist.org" (file-name-nondirectory file-path))
|
||||||
|
(start-process-shell-command
|
||||||
|
"sed-tangle"
|
||||||
|
(generate-new-buffer-name "sed-tangle")
|
||||||
|
(format "sed -n '/#+BEGIN_SRC emacs-lisp$/,/#+END_SRC$/{//!p;}' ~s.org > ~s.el" base base)))))
|
||||||
|
|
||||||
(provide 'cp-chronometrist)
|
(provide 'cp-chronometrist)
|
||||||
|
|
||||||
;; Local Variables:
|
;; Local Variables:
|
||||||
|
|
Loading…
Reference in New Issue