fundamental-mode

(sign "-- DZ " (format-time-string "%Y-%m-%d"))

prog-mode

(vip-title (if (derived-mode-p 'emacs-lisp-mode) ";; " comment-start) " " (make-string (length str) ?=) " " n
	   (if (derived-mode-p 'emacs-lisp-mode) ";; " comment-start) " " (s str) " " n
	   (if (derived-mode-p 'emacs-lisp-mode) ";; " comment-start) " " (make-string (length str) ?=) " " n)

(fixme (if (derived-mode-p 'emacs-lisp-mode) ";; " comment-start) "FIXME ")
(todo (if (derived-mode-p 'emacs-lisp-mode) ";; " comment-start) "TODO ")
(bug (if (derived-mode-p 'emacs-lisp-mode) ";; " comment-start) "BUG ")
(hack (if (derived-mode-p 'emacs-lisp-mode) ";; " comment-start) "HACK ")

scheme-mode

(crate-dependency
 "(\"rust-" crate-name "\" ,rust-" (s crate-name) "-" p ")")

(define-guix-crate
 "(define-public rust-" (s egg-name) "-" (s maj-version)
 n> "(package"
 n> "(name \"rust-" egg-name "\")"
 n> "(version \"" maj-version "." (s egg-version) "\")"
 n> "(source"
 n> "(origin"
 n> "(method url-fetch)"
 n> "(uri (crate-uri \"" egg-name "\" version))"
 n> "(sha256"
 n> "(base32"
 n> "\"0z05x7f154n9bgmainrsmncf5i6dil43r9ymr3rdgwbg4wnxmz4s\"))))"
 n> "(build-system cargo-build-system)"
 n> "(arguments"
 n> "`(#:cargo-inputs"
 n> "(" p ")"
 n> "#:cargo-development-inputs"
 n> "(" p ")"
 n> "#:cargo-build-inputs"
 n> "(" p ")))"
 n> "(synopsis \"" (s synopsis) "\")"
 n> "(home-page \"https://crates.io/crates/" egg-name "\")"
 n> "(description \"" synopsis ".\")"
 n> "(license license:" (s license) ")))")

(define-guix-egg
 "(define-public chicken-" (s egg-name)
 n> "(package"
 n> "(name \"chicken-" egg-name "\")"
 n> "(version \"" (s egg-version) "\")"
 n> "(source"
 n> "(origin"
 n> "(method url-fetch)"
 n> "(uri (egg-uri \"" egg-name "\" version))"
 n> "(sha256"
 n> "(base32"
 n> "\"0z05x7f154n9bgmainrsmncf5i6dil43r9ymr3rdgwbg4wnxmz4s\"))))"
 n> "(propagated-inputs"
 n> "(list " (s inputs) "))"
 n> "(native-inputs"
 n> "(list " (s native-inputs) "))"
 n> "(build-system chicken-build-system)"
 n> "(arguments '(#:egg-name \"" egg-name "\"))"
 n> "(synopsis \"" (s synopsis) "\")"
 n> "(home-page \"https://wiki.call-cc.org/eggref/5/" egg-name "\")"
 n> "(description \"" synopsis "\")"
 n> "(license license:" (s license) ")))")

org-mode

(src
 "#+begin_src " p
 n p n
 "#+end_src")

(advent-of-code-day
 "* Day " (s day) ": "  p
 n> n> "Get the puzzle solution as [[./day" day ".scm][tangled .scm file]]."
 n> n> "** Part One"
 n> n> "#+NAME: day" day "-imports"
 n>    "#+begin_src scheme :exports none :noweb yes :tangle day" day ".scm"
 n>
 n>    "#+end_src"
 n> n> "#+NAME: day" day "-input-scm"
 n>    "#+begin_src scheme :exports none :noweb yes :tangle day" day ".scm"
 n>    "(define input \""
 n>    "<<day" day "-input>>\")"
 n>    "#+end_src"
 n> n> "*** Quest"
 n> n> "*** Puzzle Solution"
 n> n> "**** Calculation"
 n> n> "#+NAME: day" day "-part1-calc-fn"
 n>    "#+begin_src scheme :tangle day" day ".scm :noweb strip-tangle"
 n>    ""
 n>    "#+end_src"
 n> n> "#+CALL: day" day "-part1-calc-fn[:var input=day" day "-input[] :epilogue \"(calc-part-1)\"]()"
 n> n> "** Part Two"
 n> n> "*** Quest"
 n> n> "*** Puzzle Solution"
 n> n> "**** Calculation"
 n> n> "#+NAME: day" day "-part2-calc-fn"
 n>    "#+begin_src scheme :tangle day" day ".scm :noweb strip-tangle"
 n>    ""
 n>    "#+end_src"
 n>n>  "#+CALL: day" day "-part2-calc-fn[:var input=day" day "-input[] :epilogue \"(calc-part-2)\"]()"
 n> n> "** Puzzle Input"
 n> n> "#+NAME: day" day "-input"
 n>    "#+begin_src fundamental"
 n>    "#+end_src")

;; Local Variables:
;; mode: lisp-data
;; outline-regexp: "[a-z]"
;; End: