Select Git revision
-
clovis schoeck authored
Erreur oscillation fin de l'onde de détente Déplacement de l'onde de détente, choc et discontinuité de contact lrosque dt est modifié
clovis schoeck authoredErreur oscillation fin de l'onde de détente Déplacement de l'onde de détente, choc et discontinuité de contact lrosque dt est modifié
build-doc-config.el 7.87 KiB
;;; build-doc-config --- Pugs' doc generation helper
;;; Commentary:
;;; configuration piochee sur le net
;;; Code:
(setq max-lisp-eval-depth 10000)
(setq max-specpdl-size 10000)
(require 'package)
(package-initialize)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/"))
(add-to-list 'package-archives
'("gnu" . "http://elpa.gnu.org/packages/"))
(add-to-list 'package-archives
'("org" . "https://orgmode.org/elpa/"))
;; Bootstrap `use-package'
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(package-initialize)
(use-package auto-async-byte-compile
:ensure t
:hook
(emacs-lisp-mode-hook . 'enable-auto-async-byte-compile-mode))
(setq auto-save-default nil)
(use-package tex
:ensure auctex)
(use-package org
:ensure t
:pin org)
(use-package htmlize
:ensure t)
(custom-set-variables
'(org-export-html-postamble nil)
'(org-latex-minted-langs '((pugs "Pugs") (pugs-error "Pugs")))
'(org-confirm-babel-evaluate nil)
'(org-html-validation-link nil)
'(org-src-fontify-natively t)
'(org-html-htmlize-output-type 'css)
'(org-latex-listings 'minted))
(setq org-latex-minted-options
'(("linenos=true") ("breaklines")))
(defun org-export-output-file-name-modified (orig-fun extension &optional subtreep pub-dir)
(unless pub-dir
(setq pub-dir (substitute-in-file-name "${PUGS_BINARY_DIR}/doc"))
(unless (file-directory-p pub-dir)
(make-directory pub-dir)))
(apply orig-fun extension subtreep pub-dir nil))
(advice-add 'org-export-output-file-name :around #'org-export-output-file-name-modified)
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
org-latex-pdf-process
'("cd ${PUGS_BINARY_DIR}/doc; ./build-userdoc-pdf.sh"))
(setq python-indent-guess-indent-offset-verbose nil)
(setq org-babel-python-command "python3")
(add-hook 'org-babel-after-execute-hook
'org-redisplay-inline-images)
(load-library "${HOME}/share/pugs.el")
(require 'pugs-mode)
;; allow to use pugs mode when dealing with invalid examples
(define-derived-mode pugs-error-mode pugs-mode "pugs-error"
"pugs-error mode "
)
(add-to-list 'auto-mode-alist '("\\.pgs?\\'" . pugs-mode))
(load-library "${HOME}/share/ob-pugs.el")
(require 'ob-pugs)
(load-library "${HOME}/share/ob-pugs-error.el")
(require 'ob-pugs-error)
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)
(emacs-lisp . t)
(shell . t)
(pugs . t)
(pugs-error . t)
(C . t)
(gnuplot . t)
(js . t)
(ditaa . t)
(dot . t)
(org . t)
(latex . t )))
(use-package gnuplot
:ensure t)
(eval-when-compile
(require 'easy-mmode)
(require 'ox))
(use-package ox
:config
(define-minor-mode unpackaged/org-export-html-with-useful-ids-mode
"Attempt to export Org as HTML with useful link IDs.
Instead of random IDs like \"#orga1b2c3\", use heading titles,
made unique when necessary."
:global t
(if unpackaged/org-export-html-with-useful-ids-mode
(advice-add #'org-export-get-reference :override #'unpackaged/org-export-get-reference)
(advice-remove #'org-export-get-reference #'unpackaged/org-export-get-reference)))
(defun unpackaged/org-export-get-reference (datum info)
"Like `org-export-get-reference', except uses heading titles instead of random numbers."
(let ((cache (plist-get info :internal-references)))
(or (car (rassq datum cache))
(let* ((crossrefs (plist-get info :crossrefs))
(cells (org-export-search-cells datum))
;; Preserve any pre-existing association between
;; a search cell and a reference, i.e., when some
;; previously published document referenced a location
;; within current file (see
;; `org-publish-resolve-external-link').
;;
;; However, there is no guarantee that search cells are
;; unique, e.g., there might be duplicate custom ID or
;; two headings with the same title in the file.
;;
;; As a consequence, before re-using any reference to
;; an element or object, we check that it doesn't refer
;; to a previous element or object.
(new (or (cl-some
(lambda (cell)
(let ((stored (cdr (assoc cell crossrefs))))
(when stored
(let ((old (org-export-format-reference stored)))
(and (not (assoc old cache)) stored)))))
cells)
(when (org-element-property :raw-value datum)
;; Heading with a title
(unpackaged/org-export-new-title-reference datum cache))
;; NOTE: This probably breaks some Org Export
;; feature, but if it does what I need, fine.
(org-export-format-reference
(org-export-new-reference cache))))
(reference-string new))
;; Cache contains both data already associated to
;; a reference and in-use internal references, so as to make
;; unique references.
(dolist (cell cells) (push (cons cell new) cache))
;; Retain a direct association between reference string and
;; DATUM since (1) not every object or element can be given
;; a search cell (2) it permits quick lookup.
(push (cons reference-string datum) cache)
(plist-put info :internal-references cache)
reference-string))))
(defun unpackaged/org-export-new-title-reference (datum cache)
"Return new reference for DATUM that is unique in CACHE."
(cl-macrolet ((inc-suffixf (place)
`(progn
(string-match (rx bos
(minimal-match (group (1+ anything)))
(optional "--" (group (1+ digit)))
eos)
,place)
;; HACK: `s1' instead of a gensym.
(-let* (((s1 suffix) (list (match-string 1 ,place)
(match-string 2 ,place)))
(suffix (if suffix
(string-to-number suffix)
0)))
(setf ,place (format "%s--%s" s1 (cl-incf suffix)))))))
(let* ((title (org-element-property :raw-value datum))
(ref (url-hexify-string (substring-no-properties title)))
(parent (org-element-property :parent datum)))
(while (--any (equal ref (car it))
cache)
;; Title not unique: make it so.
(if parent
;; Append ancestor title.
(setf title (concat (org-element-property :raw-value parent)
"--" title)
ref (url-hexify-string (substring-no-properties title))
parent (org-element-property :parent parent))
;; No more ancestors: add and increment a number.
(inc-suffixf ref)))
ref))))
(defun org-export-deterministic-reference (references)
(let ((new 0))
(while (rassq new references) (setq new (+ new 1)))
new))
(advice-add #'org-export-new-reference :override #'org-export-deterministic-reference)
;;; Local Variables:
;;; byte-compile-warnings: (not free-vars)
;;; End: (provide 'build-doc-config)
;;; build-doc-config.el ends here