* Author Guidelines * Under the Hood #+BEGIN_SRC emacs-lisp :tangle scripts/packages.el (require 'package) (setq user-emacs-directory (concat (getenv "ROOT") "/emacs.d")) (setq package-user-dir (concat (getenv "ROOT") "/emacs.d")) (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") ("melpa" . "https://melpa.org/packages/"))) (package-initialize) (or (file-exists-p package-user-dir) (package-refresh-contents)) (defun ensure-package-installed (&rest packages) "Ensure every PACKAGES is installed." (mapcar (lambda (package) (if (package-installed-p package) nil (package-install package)) package) packages)) (ensure-package-installed 'use-package) (eval-when-compile (require 'use-package)) (use-package org :ensure t) (use-package htmlize :ensure t) (use-package lua-mode :ensure t :defer t) (use-package sass-mode :ensure t :defer t) (use-package haskell-mode :ensure t :defer t) (use-package toml-mode :ensure t :defer t) (use-package json-mode :ensure t :defer t) (use-package soft-stone-theme :ensure t :defer t :init (load-theme 'soft-stone t)) (provide 'packages) #+END_SRC #+BEGIN_SRC emacs-lisp :tangle scripts/export-org.el (require 'packages) (org-babel-do-load-languages 'org-babel-load-languages '((shell . t))) (setq org-src-preserve-indentation t) (setq org-src-fontify-natively t) (setq org-confirm-babel-evaluate nil) (setq org-export-with-toc nil) (setq org-babel-exp-code-template (concat "#+BEGIN_SRC %lang%switches%flags " ":tangle %tangle :name %name\n" "%body\n" "#+END_SRC")) (defun cleopatra-html-src-block (oldfun src-block contents info) (let* ((old-ret (funcall oldfun src-block contents info)) (pars (org-babel-parse-header-arguments (org-element-property :parameters src-block))) (tangle (cdr (assoc :tangle pars))) (name (cdr (assoc :name pars)))) (cond (name (concat "
" (format "
<<%s>> :=
" name) old-ret "
")) ((not (string= tangle "no")) (concat "
" old-ret (format "
%s
" tangle) "
")) (t old-ret)))) (advice-add 'org-html-src-block :around #'cleopatra-html-src-block) (org-html-export-to-html nil nil nil t) #+END_SRC #+BEGIN_SRC makefile :tangle org.mk ORG_POSTS := $(shell find site/ -name "*.org") ORG_HTML := $(ORG_POSTS:.org=.html) org-prebuild : .emacs org-build : ${ORG_HTML} theme-build : site/style/org.sass soupault-build : org-build ARTIFACTS += ${ORG_HTML} "*.html~" CONFIGURE += .emacs emacs.d/ EXPORT := --directory="${ROOT}/scripts/" --batch \ --load="${ROOT}/scripts/export-org.el" \ 2>> build.log INIT := --batch --load="${ROOT}/scripts/packages.el" \ 2>> build.log .emacs : scripts/packages.el @echo " init emacs configuration" @${EMACS} ${INIT} @touch .emacs %.html : %.org scripts/packages.el scripts/export-org.el \ .emacs org.mk @echo " export $*.org" @${EMACS} $< ${EXPORT} #+END_SRC #+BEGIN_SRC sass :tangle site/style/org.sass .org-src-container @include code-block padding-top : .1rem padding-bottom : .1rem .org-src-tangled-to, .org-src-name @include padding-centered(4rem) .footdef @include padding-centered .footpara display: inline margin-left: .2em .section-number-2:after, .section-number-3:after content: ". " .section-number-4, .section-number-5, .section-number-6 display: none dl dt font-weight: bold dd p margin-top: 0 .org-literate-programming padding-top : 1rem padding-bottom : 1rem .org-src-name @include code-font font-weight: bold .org-src-tangled-to:before content: "той" .org-src-tangled-to @include code-font font-weight: bold text-align: right #+END_SRC