diff options
| author | Jonas Bernoulli <jonas@bernoul.li> | 2021-12-16 19:35:00 +0100 |
|---|---|---|
| committer | Jonas Bernoulli <jonas@bernoul.li> | 2021-12-16 19:35:00 +0100 |
| commit | a94faeae2ff95235b31c1c1f9447bc95fc527240 (patch) | |
| tree | 7b535053f07cf64a5839de1c10e769490545696e | |
| parent | 93ba7c84a752cd44a8225c4131044635465daddb (diff) | |
Add lisp/ and docs/ directories
| -rw-r--r-- | .gitignore | 18 | ||||
| -rw-r--r-- | Makefile | 198 | ||||
| -rw-r--r-- | default.mk | 28 | ||||
| -rw-r--r-- | docs/AUTHORS.md (renamed from AUTHORS.md) | 0 | ||||
| -rw-r--r-- | docs/Makefile | 116 | ||||
| -rw-r--r-- | docs/htmlxref.cnf (renamed from htmlxref.cnf) | 0 | ||||
| -rw-r--r-- | docs/with-editor.org (renamed from with-editor.org) | 0 | ||||
| -rw-r--r-- | docs/with-editor.texi (renamed from with-editor.texi) | 0 | ||||
| -rw-r--r-- | lisp/Makefile | 44 | ||||
| -rw-r--r-- | lisp/with-editor.el (renamed from with-editor.el) | 0 |
10 files changed, 225 insertions, 179 deletions
@@ -1,9 +1,9 @@ -/*.elc -/*-autoloads.el -/.config.mk -/dir -/with-editor/ -/with-editor.html -/with-editor.info -/with-editor.pdf -/with-editor-autoloads.el +/config.mk +/docs/*.html +/docs/*.pdf +/docs/dir +/docs/stats/ +/lisp/*-autoloads.el +/lisp/*.elc + +/docs/with-editor/ @@ -1,193 +1,51 @@ -include config.mk +include default.mk -PKG = with-editor +.PHONY: lisp docs clean -ELS = $(PKG).el -ELCS = $(ELS:.el=.elc) - -DEPS = dash - -VERSION ?= $(shell test -e $(TOP).git && git describe --tags --abbrev=0 | cut -c2-) - -EMACS ?= emacs -EMACS_ARGS ?= -EMACS_ARGS += --eval '(setq with-editor-emacsclient-executable nil)' - -LOAD_PATH ?= $(addprefix -L ../,$(DEPS)) -LOAD_PATH += -L . - -ifndef ORG_LOAD_PATH -ORG_LOAD_PATH = -L ../org/lisp -ORG_LOAD_PATH += -L ../ox-texinfo+ -endif - -INSTALL_INFO ?= $(shell command -v ginstall-info || printf install-info) -MAKEINFO ?= makeinfo -MANUAL_HTML_ARGS ?= --css-ref /assets/page.css - -all: lisp info -doc: info html html-dir pdf +all: lisp docs help: $(info make all - generate lisp and manual) - $(info make doc - generate most manual formats) $(info make lisp - generate byte-code and autoloads) + $(info make docs - generate most manual formats) $(info make texi - generate texi manual (see comments)) $(info make info - generate info manual) $(info make html - generate html manual file) $(info make html-dir - generate html manual directory) $(info make pdf - generate pdf manual) - $(info make stats - generate statistics) $(info make authors - generate AUTHORS.md) + $(info make stats - generate statistics) $(info make publish - publish snapshot manuals) $(info make release - publish release manuals) $(info make clean - remove most generated files) + @printf "\n" -lisp: $(ELCS) loaddefs - -loaddefs: $(PKG)-autoloads.el - -%.elc: %.el - @printf "Compiling $<\n" - @$(EMACS) -Q --batch $(EMACS_ARGS) $(LOAD_PATH) -f batch-byte-compile $< - -info: $(PKG).info dir -html: $(PKG).html -pdf: $(PKG).pdf +lisp: + @$(MAKE) -C lisp lisp -ORG_ARGS = --batch -Q $(ORG_LOAD_PATH) -l ox-texinfo+ -ORG_EVAL = --eval "(setq org-texinfo+-dissolve-noexport-headlines t)" -ORG_EVAL += --eval "(setq indent-tabs-mode nil)" -ORG_EVAL += --eval "(setq org-src-preserve-indentation nil)" -ORG_EVAL += --funcall org-texinfo-export-to-texinfo - -# This target first bumps version strings in the Org source. The -# necessary tools might be missing so other targets do not depend -# on this target and it has to be run explicitly when appropriate. -# -# AMEND=t make texi Update manual to be amended to HEAD. -# VERSION=N make texi Update manual for release. -# -.PHONY: texi +docs: + @$(MAKE) -C docs docs texi: - @$(EMACS) $(ORG_ARGS) $(PKG).org $(ORG_EVAL) - @printf "\n" >> $(PKG).texi - @rm -f $(PKG).texi~ - -%.info: %.texi - @printf "Generating $@\n" - @$(MAKEINFO) --no-split $< -o $@ - -dir: $(PKG).info - @printf "Generating $@\n" - @printf "%s" $^ | xargs -n 1 $(INSTALL_INFO) --dir=$@ - -HTML_FIXUP_CSS = '/<link rel="stylesheet" type="text\/css" href="\/assets\/page.css">/a\ -<link rel="icon" href="/assets/magit_alt1.ico">\ -\n<link class="s-css-s--style" rel="stylesheet" title="Default" href="/assets/themes/default.css">\ -\n<link class="s-css-s--style" rel="stylesheet alternate" title="Default high contrast" href="/assets/themes/default-high-contrast.css">\ -\n<link class="s-css-s--style" rel="stylesheet alternate" title="Solarized dark xterm" href="/assets/themes/solarized-dark-xterm.css">\ -\n<link class="s-css-s--style" rel="stylesheet alternate" title="Black on white" href="/assets/themes/black-on-white.css">\ -\n<script src="/assets/js/simple-css-switch.js"></script>' -HTML_FIXUP_ONLOAD = 's/<body lang="en">/<body lang="en" onload="simpleCssSwitch()">/' -HTML_FIXUP_MENU = '/<\/body>/i<div id="s-css-s--menu"><\/div>' - -%.html: %.texi - @printf "Generating $@\n" - @$(MAKEINFO) --html --no-split $(MANUAL_HTML_ARGS) $< - @sed -i -e $(HTML_FIXUP_CSS) -e $(HTML_FIXUP_ONLOAD) -e $(HTML_FIXUP_MENU) $@ - -html-dir: $(PKG).texi - @printf "Generating $(PKG)/*.html\n" - @$(MAKEINFO) --html $(MANUAL_HTML_ARGS) $< - @for f in $$(find $(PKG) -name '*.html') ; do \ - sed -i -e $(HTML_FIXUP_CSS) -e $(HTML_FIXUP_ONLOAD) -e $(HTML_FIXUP_MENU) $$f ; \ - done - -%.pdf: %.texi - @printf "Generating $@\n" - @texi2pdf --clean $< > /dev/null - -.PHONY: stats + @$(MAKE) -C docs texi +info: + @$(MAKE) -C docs info +html: + @$(MAKE) -C docs html +html-dir: + @$(MAKE) -C docs html-dir +pdf: + @$(MAKE) -C docs pdf +authors: + @$(MAKE) -C docs authors stats: - @printf "Generating statistics\n" - @gitstats -c style=https://magit.vc/assets/stats.css -c max_authors=999 . stats - -DOMAIN ?= magit.vc -PUBLISH_PATH ?= /manual/ -RELEASE_PATH ?= /manual/$(VERSION)/ - -S3_BUCKET ?= s3://$(DOMAIN) -PUBLISH_TARGET = $(S3_BUCKET)$(PUBLISH_PATH) -RELEASE_TARGET = $(S3_BUCKET)$(RELEASE_PATH) - -CFRONT_DIST ?= E2LUHBKU1FBV02 -CFRONT_PATHS = $(PKG).html $(PKG).pdf $(PKG)/* + @$(MAKE) -C docs stats -comma := , -empty := -space := $(empty) $(empty) - -publish: html html-dir pdf - @aws s3 cp $(PKG).html $(PUBLISH_TARGET) - @aws s3 cp $(PKG).pdf $(PUBLISH_TARGET) - @aws s3 sync --delete $(PKG) $(PUBLISH_TARGET)$(PKG)/ - @printf "Generating CDN invalidation\n" - @aws cloudfront create-invalidation --distribution-id $(CFRONT_DIST) --paths \ - "$(subst $(space),$(comma),$(addprefix $(PUBLISH_PATH),$(CFRONT_PATHS)))" > /dev/null - -release: html html-dir pdf - @aws s3 cp $(PKG).html $(RELEASE_TARGET) - @aws s3 cp $(PKG).pdf $(RELEASE_TARGET) - @aws s3 sync --delete $(PKG) $(RELEASE_TARGET)$(PKG)/ - @aws s3 cp $(PUBLISH_TARGET)dir.html $(RELEASE_TARGET)dir.html - @aws s3 cp $(PUBLISH_TARGET)dir/index.html $(RELEASE_TARGET)dir/index.html - @printf "Generating CDN invalidation\n" - @aws cloudfront create-invalidation --distribution-id $(CFRONT_DIST) --paths \ - "$(subst $(space),$(comma),$(addprefix $(RELEASE_PATH),$(CFRONT_PATHS)))" > /dev/null - -CLEAN = $(ELCS) $(PKG)-autoloads.el $(PKG).info dir -CLEAN += $(PKG) $(PKG).html $(PKG).pdf +publish: + @$(MAKE) -C docs publish +release: + @$(MAKE) VERSION=$(VERSION) -C docs release clean: - @printf "Cleaning...\n" - @rm -rf $(CLEAN) - -.PHONY: authors AUTHORS.md -authors: AUTHORS.md - -AUTHORS.md: - @ printf "Authors\n=======\n\n" > $@ - @ ( printf "%s\n" "- Barak A. Pearlmutter <barak+git@pearlmutter.net>" && \ - printf "%s\n" "- Lele Gaifax <lele@metapensiero.it>" && \ - printf "%s\n" "- Rémi Vanicat <vanicat@debian.org>" && \ - git log --pretty=format:'- %aN <%aE>' \ - ) | sort -u >> $@ - -define LOADDEFS_TMPL -;;; $(PKG)-autoloads.el --- automatically extracted autoloads -;; -;;; Code: -(add-to-list 'load-path (directory-file-name \ -(or (file-name-directory #$$) (car load-path)))) - -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; End: -;;; $(PKG)-autoloads.el ends here -endef -export LOADDEFS_TMPL -#' - -$(PKG)-autoloads.el: $(ELS) - @printf "Generating $@\n" - @printf "%s" "$$LOADDEFS_TMPL" > $@ - @$(EMACS) -Q --batch --eval "(progn\ - (setq make-backup-files nil)\ - (setq vc-handled-backends nil)\ - (setq default-directory (file-truename default-directory))\ - (setq generated-autoload-file (expand-file-name \"$@\"))\ - (setq find-file-visit-truename t)\ - (update-directory-autoloads default-directory))" + @$(MAKE) -C lisp clean + @$(MAKE) -C docs clean diff --git a/default.mk b/default.mk new file mode 100644 index 0000000..c40a18e --- /dev/null +++ b/default.mk @@ -0,0 +1,28 @@ +TOP := $(dir $(lastword $(MAKEFILE_LIST))) + +PKG = with-editor + +ELS = $(PKG).el +ELCS = $(ELS:.el=.elc) + +DEPS = dash + +VERSION ?= $(shell test -e $(TOP).git && git describe --tags --abbrev=0 | cut -c2-) + +EMACS ?= emacs +EMACS_ARGS ?= +EMACS_ARGS += --eval '(setq with-editor-emacsclient-executable nil)' + +LOAD_PATH ?= $(addprefix -L ../../,$(DEPS)) +LOAD_PATH += -L . + +ifndef ORG_LOAD_PATH +ORG_LOAD_PATH = -L ../../org/lisp +ORG_LOAD_PATH += -L ../../ox-texinfo+ +endif + +INSTALL_INFO ?= $(shell command -v ginstall-info || printf install-info) +MAKEINFO ?= makeinfo +MANUAL_HTML_ARGS ?= --css-ref /assets/page.css + +STATS_DIR ?= $(TOP)docs/stats diff --git a/AUTHORS.md b/docs/AUTHORS.md index 1f4d453..1f4d453 100644 --- a/AUTHORS.md +++ b/docs/AUTHORS.md diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..b40affa --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,116 @@ +-include ../config.mk +include ../default.mk + +docs: info html html-dir pdf + +info: $(PKG).info dir +html: $(PKG).html +pdf: $(PKG).pdf + +ORG_ARGS = --batch -Q $(ORG_LOAD_PATH) -l ox-texinfo+ +ORG_EVAL = --eval "(setq org-texinfo+-dissolve-noexport-headlines t)" +ORG_EVAL += --eval "(setq indent-tabs-mode nil)" +ORG_EVAL += --eval "(setq org-src-preserve-indentation nil)" +ORG_EVAL += --funcall org-texinfo-export-to-texinfo + +# This target first bumps version strings in the Org source. The +# necessary tools might be missing so other targets do not depend +# on this target and it has to be run explicitly when appropriate. +# +# AMEND=t make texi Update manual to be amended to HEAD. +# VERSION=N make texi Update manual for release. +# +.PHONY: texi +texi: + @$(EMACS) $(ORG_ARGS) $(PKG).org $(ORG_EVAL) + @printf "\n" >> $(PKG).texi + @rm -f $(PKG).texi~ + +%.info: %.texi + @printf "Generating $@\n" + @$(MAKEINFO) --no-split $< -o $@ + +dir: $(PKG).info + @printf "Generating $@\n" + @printf "%s" $^ | xargs -n 1 $(INSTALL_INFO) --dir=$@ + +HTML_FIXUP_CSS = '/<link rel="stylesheet" type="text\/css" href="\/assets\/page.css">/a\ +<link rel="icon" href="/assets/magit_alt1.ico">\ +\n<link class="s-css-s--style" rel="stylesheet" title="Default" href="/assets/themes/default.css">\ +\n<link class="s-css-s--style" rel="stylesheet alternate" title="Default high contrast" href="/assets/themes/default-high-contrast.css">\ +\n<link class="s-css-s--style" rel="stylesheet alternate" title="Solarized dark xterm" href="/assets/themes/solarized-dark-xterm.css">\ +\n<link class="s-css-s--style" rel="stylesheet alternate" title="Black on white" href="/assets/themes/black-on-white.css">\ +\n<script src="/assets/js/simple-css-switch.js"></script>' +HTML_FIXUP_ONLOAD = 's/<body lang="en">/<body lang="en" onload="simpleCssSwitch()">/' +HTML_FIXUP_MENU = '/<\/body>/i<div id="s-css-s--menu"><\/div>' + +%.html: %.texi + @printf "Generating $@\n" + @$(MAKEINFO) --html --no-split $(MANUAL_HTML_ARGS) $< + @sed -i -e $(HTML_FIXUP_CSS) -e $(HTML_FIXUP_ONLOAD) -e $(HTML_FIXUP_MENU) $@ + +html-dir: $(PKG).texi + @printf "Generating $(PKG)/*.html\n" + @$(MAKEINFO) --html $(MANUAL_HTML_ARGS) $< + @for f in $$(find $(PKG) -name '*.html') ; do \ + sed -i -e $(HTML_FIXUP_CSS) -e $(HTML_FIXUP_ONLOAD) -e $(HTML_FIXUP_MENU) $$f ; \ + done + +%.pdf: %.texi + @printf "Generating $@\n" + @texi2pdf --clean $< > /dev/null + +.PHONY: stats +stats: + @printf "Generating statistics\n" + @gitstats -c style=https://magit.vc/assets/stats.css -c max_authors=999 $(TOP) $(STATS_DIR) + +DOMAIN ?= magit.vc +PUBLISH_PATH ?= /manual/ +RELEASE_PATH ?= /manual/$(VERSION)/ + +S3_BUCKET ?= s3://$(DOMAIN) +PUBLISH_TARGET = $(S3_BUCKET)$(PUBLISH_PATH) +RELEASE_TARGET = $(S3_BUCKET)$(RELEASE_PATH) + +CFRONT_DIST ?= E2LUHBKU1FBV02 +CFRONT_PATHS = $(PKG).html $(PKG).pdf $(PKG)/* + +comma := , +empty := +space := $(empty) $(empty) + +publish: html html-dir pdf + @aws s3 cp $(PKG).html $(PUBLISH_TARGET) + @aws s3 cp $(PKG).pdf $(PUBLISH_TARGET) + @aws s3 sync --delete $(PKG) $(PUBLISH_TARGET)$(PKG)/ + @printf "Generating CDN invalidation\n" + @aws cloudfront create-invalidation --distribution-id $(CFRONT_DIST) --paths \ + "$(subst $(space),$(comma),$(addprefix $(PUBLISH_PATH),$(CFRONT_PATHS)))" > /dev/null + +release: html html-dir pdf + @aws s3 cp $(PKG).html $(RELEASE_TARGET) + @aws s3 cp $(PKG).pdf $(RELEASE_TARGET) + @aws s3 sync --delete $(PKG) $(RELEASE_TARGET)$(PKG)/ + @aws s3 cp $(PUBLISH_TARGET)dir.html $(RELEASE_TARGET)dir.html + @aws s3 cp $(PUBLISH_TARGET)dir/index.html $(RELEASE_TARGET)dir/index.html + @printf "Generating CDN invalidation\n" + @aws cloudfront create-invalidation --distribution-id $(CFRONT_DIST) --paths \ + "$(subst $(space),$(comma),$(addprefix $(RELEASE_PATH),$(CFRONT_PATHS)))" > /dev/null + +CLEAN = $(PKG).info dir $(PKG) $(PKG).html $(PKG).pdf + +clean: + @printf "Cleaning docs/*...\n" + @rm -rf $(CLEAN) + +.PHONY: authors AUTHORS.md +authors: AUTHORS.md + +AUTHORS.md: + @ printf "Authors\n=======\n\n" > $@ + @ ( printf "%s\n" "- Barak A. Pearlmutter <barak+git@pearlmutter.net>" && \ + printf "%s\n" "- Lele Gaifax <lele@metapensiero.it>" && \ + printf "%s\n" "- Rémi Vanicat <vanicat@debian.org>" && \ + git log --pretty=format:'- %aN <%aE>' \ + ) | sort -u >> $@ diff --git a/htmlxref.cnf b/docs/htmlxref.cnf index 54c3421..54c3421 100644 --- a/htmlxref.cnf +++ b/docs/htmlxref.cnf diff --git a/with-editor.org b/docs/with-editor.org index c9a0bcb..c9a0bcb 100644 --- a/with-editor.org +++ b/docs/with-editor.org diff --git a/with-editor.texi b/docs/with-editor.texi index 73c89f6..73c89f6 100644 --- a/with-editor.texi +++ b/docs/with-editor.texi diff --git a/lisp/Makefile b/lisp/Makefile new file mode 100644 index 0000000..ba0c4c1 --- /dev/null +++ b/lisp/Makefile @@ -0,0 +1,44 @@ +-include ../config.mk +include ../default.mk + +lisp: $(ELCS) loaddefs + +loaddefs: $(PKG)-autoloads.el + +%.elc: %.el + @printf "Compiling $<\n" + @$(EMACS) -Q --batch $(EMACS_ARGS) $(LOAD_PATH) -f batch-byte-compile $< + +CLEAN = $(ELCS) $(PKG)-autoloads.el + +clean: + @printf "Cleaning lisp/*...\n" + @rm -rf $(CLEAN) + +define LOADDEFS_TMPL +;;; $(PKG)-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (directory-file-name \ +(or (file-name-directory #$$) (car load-path)))) + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; $(PKG)-autoloads.el ends here +endef +export LOADDEFS_TMPL +#' + +$(PKG)-autoloads.el: $(ELS) + @printf "Generating $@\n" + @printf "%s" "$$LOADDEFS_TMPL" > $@ + @$(EMACS) -Q --batch --eval "(progn\ + (setq make-backup-files nil)\ + (setq vc-handled-backends nil)\ + (setq default-directory (file-truename default-directory))\ + (setq generated-autoload-file (expand-file-name \"$@\"))\ + (setq find-file-visit-truename t)\ + (update-directory-autoloads default-directory))" diff --git a/with-editor.el b/lisp/with-editor.el index c0bf1dd..c0bf1dd 100644 --- a/with-editor.el +++ b/lisp/with-editor.el |
