From bbd5db279aa3b2227b43e7aaa6063e9a8621b210 Mon Sep 17 00:00:00 2001
From: Paul Nelson <ultrono@gmail.com>
Date: Tue, 9 Apr 2024 05:04:56 +0200
Subject: [PATCH] Allow preprocessing of previews

* preview.el.in (preview-preprocess-function): New variable.
(preview-region): Use the new variable (if non-nil) to
preprocess the region being previewed.
---
 preview.el.in | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/preview.el.in b/preview.el.in
index 95410439..2fbf3a52 100644
--- a/preview.el.in
+++ b/preview.el.in
@@ -4030,6 +4030,11 @@ stored in `preview-dumped-alist'."
   (preview-format-kill old-format)
   (setcdr old-format nil))
 
+(defvar preview-preprocess-function nil
+  "Function used to preprocess region before previewing.
+The function bound to this variable will be called inside
+`preview-region' with one argument which is a string.")
+
 (defun preview-region (begin end)
   "Run preview on region between BEGIN and END."
   (interactive "r")
@@ -4038,7 +4043,10 @@ stored in `preview-dumped-alist'."
          (concat (preview--counter-information begin)
                  TeX-region-extra)))
     (TeX-region-create (TeX-region-file TeX-default-extension)
-                       (buffer-substring-no-properties begin end)
+                       (let ((str (buffer-substring-no-properties begin end)))
+                         (if preview-preprocess-function
+                             (funcall preview-preprocess-function str)
+                           str))
                        (if buffer-file-name
                            (file-name-nondirectory buffer-file-name)
                          "<none>")
-- 
2.39.3 (Apple Git-145)

