[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [reveal-mode] Hiding short expressions

From: Ralf Angeli
Subject: Re: [reveal-mode] Hiding short expressions
Date: Sat, 03 Jul 2004 14:07:09 +0200
User-agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3.50 (gnu/linux)

* Stefan (2004-07-02) writes:

>> currently I am trying to make use of reveal-mode for hiding and
>> revealing \footnote{...} expressions in Emacs.  Now the problem is
>> that visible expressions under the control of reveal-mode only get
>> hidden if the cursor moves before the beginning of the line with the
>> expression or past its end.  If you have short expressions within a
>> line it would be nice if the expression became invisible as soon as
>> the cursor moves out of it.
>> Are there any reasons why this is not handled like this in reveal.el
>> and would it be possible to change it if there aren't any? 
> The behavior you seem to want is actually simpler than the current
> behavior (in other words, I first implemented the behavior you want and
> then added code to keep the overlays open even after the cursor moves out
> of the overlay), and it should be easy to change the code such that you can
> choose between different behaviors.

One could add a variable which lets you choose what behavior is used.
But if you wanted to use outline-minor-mode and hiding of footnotes at
the same time in a latex-mode or LaTeX-mode buffer, it would probably
be better to choose the behavior depending on a special attribute of
the overlays.  This could be done e.g. by adding a 'reveal-close
attribute to the 'category property of the overlay:

(put 'some-category 'reveal-close 'on-cursor-out)
(overlay-put ov 'category 'some-category)

Then this gets checked in reveal.el:

--8<---------------cut here---------------start------------->8---
--- /usr/local/share/emacs/21.3.50/lisp/reveal.el       2004-07-02 
22:08:23.000000000 +0200
+++ reveal.el   2004-07-03 12:44:47.000000000 +0200
@@ -116,12 +116,20 @@
      (dolist (ol old-ols)
        (when (and (eq (current-buffer) (overlay-buffer ol))
                  (not (rassq ol reveal-open-spots)))
-        (if (and (>= (point) (save-excursion
-                               (goto-char (overlay-start ol))
-                               (line-beginning-position 1)))
-                 (<= (point) (save-excursion
-                               (goto-char (overlay-end ol))
-                               (line-beginning-position 2))))
+        (if (and (>= (point)
+                     (if (eq (get (overlay-get ol 'category) 'reveal-close)
+                             'on-cursor-out)
+                         (overlay-start ol)
+                       (save-excursion
+                         (goto-char (overlay-start ol))
+                         (line-beginning-position 1))))
+                 (<= (point)
+                     (if (eq (get (overlay-get ol 'category) 'reveal-close)
+                             'on-cursor-out)
+                         (overlay-end ol)
+                       (save-excursion
+                         (goto-char (overlay-end ol))
+                         (line-beginning-position 2)))))
             ;; Still near the overlay: keep it open.
             (push (cons (selected-window) ol) reveal-open-spots)
           ;; Really close it.
--8<---------------cut here---------------end--------------->8---

How does this look like?

I am considering to add some code to AUCTeX in order to support hiding
of LaTeX macros with reveal-mode.  (This hasn't been discussed yet on
the AUCTeX mailing list, though.)  So it would be nice if the above or
something similar could be integrated into Emacs.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]