bug#69954: 13.3; allow TeX-fold auto-reveal customization

2024-03-24 Thread Ikumi Keita
Hi Paul,

> Paul Nelson  writes:
> It would be useful to be able to customize when TeX-fold-mode
> auto-reveals.  I attach a patch with my best attempt at this,
> imitating what is done in preview.el.

Thanks for your proposal. I'm considering to apply slightly modified
patch as attached. I intend to have all `defcustom's in the early
block of the file and to improve similarity with preview.el.

What do you think about this idea?

Regards,
Ikumi Keita
#StandWithUkraine #StopWarInUkraine
#Gaza #StopMassiveKilling #CeasefireNOW

diff --git a/tex-fold.el b/tex-fold.el
index 92304fb2..d786ff62 100644
--- a/tex-fold.el
+++ b/tex-fold.el
@@ -254,6 +254,34 @@ After that, changing the prefix key requires manipulating keymaps."
 (define-key map "i"#'TeX-fold-clearout-item)
 map))
 
+(defcustom TeX-fold-auto-reveal
+  '(eval (TeX-fold-arrived-via (key-binding [left]) (key-binding [right])
+   #'backward-char #'forward-char
+   #'mouse-set-point))
+  "Predicate to open a fold when entered.
+Possibilities are:
+t autoopens,
+nil doesn't,
+a symbol will have its value consulted if it exists,
+defaulting to nil if it doesn't.
+A CONS-cell means to call a function for determining the value.
+The CAR of the cell is the function to call which receives
+the CDR of the CONS-cell in the rest of the arguments, while
+point and current buffer point to the position in question.
+All of the options show reasonable defaults."
+  :group 'TeX-fold
+  :type '(choice (const :tag "Off" nil)
+ (const :tag "On" t)
+ (symbol :tag "Indirect variable" :value reveal-mode)
+ (cons :tag "Function call"
+   :value (eval (TeX-fold-arrived-via
+ (key-binding [left])
+ (key-binding [right])
+ #'backward-char #'forward-char
+ #'mouse-set-point))
+   function (list :tag "Argument list"
+  (repeat :inline t sexp)
+
 
 ;;; Folding
 
@@ -833,6 +861,22 @@ Remove the respective properties from the overlay OV."
   (when font-lock-mode
 (overlay-put ov 'face TeX-fold-unfolded-face)))
 
+(defun TeX-fold-auto-reveal-p (mode)
+  "Decide whether to auto-reveal.
+Return non-nil if folded region should be auto-opened.
+See `TeX-fold-auto-reveal' for definitions of MODE."
+  (cond ((symbolp mode)
+ (and (boundp mode)
+  (symbol-value mode)))
+((consp mode)
+ (apply (car mode) (cdr mode)))
+(t mode)))
+
+(defun TeX-fold-arrived-via ( list)
+  "Indicate auto-opening.
+Return non-nil if called by one of the commands in LIST."
+  (memq this-command list))
+
 ;; Copy and adaption of `reveal-post-command' from reveal.el in GNU
 ;; Emacs on 2004-07-04.
 (defun TeX-fold-post-command ()
@@ -855,11 +899,7 @@ Remove the respective properties from the overlay OV."
   (setq TeX-fold-open-spots (cdr spots))
   (when (or disable-point-adjustment
 global-disable-point-adjustment
-;; See preview.el on how to make this configurable.
-(memq this-command
-  (list (key-binding [left]) (key-binding [right])
-#'backward-char #'forward-char
-#'mouse-set-point)))
+(TeX-fold-auto-reveal-p TeX-fold-auto-reveal))
 ;; Open new overlays.
 (dolist (ol (nconc (when (and TeX-fold-unfold-around-mark
   mark-active)
___
bug-auctex mailing list
bug-auctex@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-auctex


bug#69954: 13.3; allow TeX-fold auto-reveal customization

2024-03-24 Thread Paul Nelson
Hi Ikumi,

Looks good to me!

Thanks, best,

Paul



___
bug-auctex mailing list
bug-auctex@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-auctex