emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Sylvain Chouleur <sylvain.chouleur@gmail.com>
To: emacs-orgmode@gnu.org
Subject: [PATCH] Fix org-outline-overlay-data marker insertion-type
Date: Wed, 15 Jan 2014 01:19:04 +0100	[thread overview]
Message-ID: <CAD_mUW07yL8ALHKzMj+iAN5S696i7xW0Q06DwVMMXeb-JAKT1A@mail.gmail.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 755 bytes --]

Hi all,

here is a patch that fixes outline visibility saving.

The root issue I've found is that when you call org-babel-execute-subtree
on a folded outline, the result is shown visible so the visibility property
is not well kept.

The root cause is the markers used by org-outline-overlay-data to bound the
invisible area.
When org-babel-insert-result is called by org-babel-execute-subtree, text
is added from the position of marker that mark the end of invisible area.
As the insertion-type of the marker is by default nil, the marker stays
where it is but text is inserted after, so the inserted text becomes
visible.

I'm not sure about the fix, I'm fearing some side effect I can't see in my
usage so it's open to any comments

Thanks

-- 
Sylvain

[-- Attachment #1.2: Type: text/html, Size: 983 bytes --]

[-- Attachment #2: 0001-Fix-org-outline-overlay-data-marker-insertion-type.patch --]
[-- Type: text/x-patch, Size: 1409 bytes --]

From a4bb85d9577e0454e01abe596f92b152007c0d9f Mon Sep 17 00:00:00 2001
From: Sylvain Chouleur <sylvain.chouleur@intel.com>
Date: Wed, 15 Jan 2014 00:38:55 +0100
Subject: [PATCH] Fix org-outline-overlay-data marker insertion-type

* org.el: Set the insertion-type of bounds markers of
org-outline-overlay-data to t (means marker advances when you insert
text at it)

This is to conserve outline visibility property when changes are made
at the bounds of the data.
For example: try org-babel-execute-subtree on a folded outline:
The new result will be shown after the folded part of the outline
whereas the outline body should not be visible.
---
 lisp/org.el | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index a53597e477e2..fc0f0ccb7125 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -7191,8 +7191,12 @@ If USE-MARKERS is set, return the positions as markers."
 				end (overlay-end o))
 			  (and beg end (> end beg)
 			       (if use-markers
-				   (cons (move-marker (make-marker) beg)
-					 (move-marker (make-marker) end))
+				   (let ((bound
+					  (cons (move-marker (make-marker) beg)
+						(move-marker (make-marker) end))))
+				     (set-marker-insertion-type (car bound) t)
+				     (set-marker-insertion-type (cdr bound) t)
+				     bound)
 				 (cons beg end)))))
 		      (overlays-in (point-min) (point-max))))))))
 
-- 
1.8.5.2


             reply	other threads:[~2014-01-15  0:19 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-15  0:19 Sylvain Chouleur [this message]
2014-01-18 17:27 ` [PATCH] Fix org-outline-overlay-data marker insertion-type Sylvain Chouleur
2014-01-18 17:43   ` Nicolas Goaziou
2014-01-18 18:35     ` Sylvain Chouleur
2014-01-18 19:57       ` Nicolas Goaziou
2014-01-19 13:20         ` Sylvain Chouleur
2014-01-19 19:38           ` Nicolas Goaziou
2014-01-19 19:46             ` Sylvain Chouleur
2014-01-19 21:06               ` Nicolas Goaziou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAD_mUW07yL8ALHKzMj+iAN5S696i7xW0Q06DwVMMXeb-JAKT1A@mail.gmail.com \
    --to=sylvain.chouleur@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).