branch: externals/engrave-faces commit 7fc664a4f3add72070477b62374e8f7db4eee12d Author: TEC <t...@tecosaur.com> Commit: TEC <t...@tecosaur.com>
Add interactive commands for backends --- engrave-faces-latex.el | 13 +++++-------- engrave-faces.el | 24 ++++++++++++++++++++---- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/engrave-faces-latex.el b/engrave-faces-latex.el index 5a3891e..5166309 100644 --- a/engrave-faces-latex.el +++ b/engrave-faces-latex.el @@ -91,15 +91,8 @@ See `engrave-faces-preset-styles' and `engrave-faces-latex-output-style'." (while (re-search-forward "\n\\([[:space:]]*\\)\\(}+\\)" nil t) (replace-match "\\2\n\\1"))) -;;;###autoload -(engrave-faces-define-backend "latex" ".tex" #'engrave-faces-latex-face-mapper) -(add-hook 'engrave-faces-latex-after-hook #'engrave-faces-latex-post-processing) - -;;;###autoload -(defun engrave-faces-latex-buffer-standalone () +(defun engrave-faces-latex-make-standalone () "Export current buffer to a standalone LaTeX buffer." - (interactive) - (switch-to-buffer (engrave-faces-latex-buffer)) (goto-char (point-min)) (insert "\\documentclass{article} @@ -117,5 +110,9 @@ See `engrave-faces-preset-styles' and `engrave-faces-latex-output-style'." (insert "\\end{Verbatim} \\end{document}")) +;;;###autoload +(engrave-faces-define-backend "latex" ".tex" #'engrave-faces-latex-face-mapper #'engrave-faces-latex-make-standalone #'latex-mode) +(add-hook 'engrave-faces-latex-after-hook #'engrave-faces-latex-post-processing) + (provide 'engrave-faces-latex) ;;; engrave-faces-latex.el ends here diff --git a/engrave-faces.el b/engrave-faces.el index a6014c9..8146fc2 100644 --- a/engrave-faces.el +++ b/engrave-faces.el @@ -42,12 +42,28 @@ (defvar engrave-faces--backends nil) ;;;###autoload -(defmacro engrave-faces-define-backend (name extension face-transformer) +(defmacro engrave-faces-define-backend (name extension face-transformer &optional standalone-transformer view-setup) `(progn (add-to-list 'engrave-faces--backends (list ,name :face-transformer ,face-transformer :extension ,extension)) - (defun ,(intern (concat "engrave-faces-" name "-buffer")) () - ,(concat "Convert buffer to " name " formatting") - (engrave-faces-buffer-1 ,name)) + (defun ,(intern (concat "engrave-faces-" name "-buffer")) (&optional switch-to-result) + ,(concat "Convert buffer to " name " formatting.") + (interactive '(t)) + (let ((buf (engrave-faces-buffer ,name))) + (when switch-to-result + (switch-to-buffer buf) + ,(when view-setup `(funcall ,view-setup))) + buf)) + ,(when standalone-transformer + `(defun ,(intern (concat "engrave-faces-" name "-buffer-standalone")) (&optional switch-to-result) + (interactive '(t)) + ,(concat "Export the current buffer to a standalone " name " buffer.") + (let ((buf (engrave-faces-buffer ,name))) + (with-current-buffer buf + (funcall ,standalone-transformer)) + (when switch-to-result + (switch-to-buffer buf) + ,(when view-setup `(funcall ,view-setup))) + buf))) (defvar ,(intern (concat "engrave-faces-" name "-before-hook")) nil) (defvar ,(intern (concat "engrave-faces-" name "-after-hook")) nil)))