From: Ratish Punnoose <ratish@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: [WORG] How to ediff folded Org files?
Date: Wed, 31 Jul 2013 23:19:34 +0000 (UTC) [thread overview]
Message-ID: <loom.20130801T011342-572@post.gmane.org> (raw)
In-Reply-To: 87y5cwrnw9.fsf@gmail.com
Thorsten Jolitz <tjolitz <at> gmail.com> writes:
> Hi List,
>
> many files on Worg have this startup option:
>
> ,--------------------------
> | +STARTUP: ... fold ...
> `--------------------------
>
> what leads to trouble when there is a merge-conflict in (Ma)git to be
> resolved manually with e(diff), because the different versions of the
> Org-file are then presented in folded state in the ediff session, so the
> diffs are invisible.
>
> But when I call 'show-all' or so on them, it breaks the ediff session.
> Is there a simple trick to avoid this problem?
>
I was searching for a similar issue and came upon this list. I have a
slightly different solution from the ones posted so far.
When doing a diff, each org-mode buffer is fully folded.
For each diff selection, that portion of the tree for each buffer is
expanded.
When moving to a new diff, the previous portion of the tree is collapsed and
the area surrounding the new diff location is expanded.
Acknowledgment: Michael Brand's solution was my starting inspiration.
#+BEGIN_SRC emacs-lisp
;; diff hooks for org mode
(add-hook 'ediff-select-hook 'f-ediff-org-unfold-tree-element)
(add-hook 'ediff-unselect-hook 'f-ediff-org-fold-tree)
;; Check for org mode and existence of buffer
(defun f-ediff-org-showhide(buf command &rest cmdargs)
"If buffer exists and is orgmode then execute command"
(if buf
(if (eq (buffer-local-value 'major-mode (get-buffer buf)) 'org-mode)
(save-excursion (set-buffer buf) (apply command cmdargs)))
)
)
(defun f-ediff-org-unfold-tree-element ()
"Unfold tree at diff location"
(f-ediff-org-showhide ediff-buffer-A 'org-reveal)
(f-ediff-org-showhide ediff-buffer-B 'org-reveal)
(f-ediff-org-showhide ediff-buffer-C 'org-reveal)
)
;;
(defun f-ediff-org-fold-tree ()
"Fold tree back to top level"
(f-ediff-org-showhide ediff-buffer-A 'hide-sublevels 1)
(f-ediff-org-showhide ediff-buffer-B 'hide-sublevels 1)
(f-ediff-org-showhide ediff-buffer-C 'hide-sublevels 1)
)
#+END_SRC
next prev parent reply other threads:[~2013-07-31 23:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-06 9:47 [WORG] How to ediff folded Org files? Thorsten Jolitz
2013-04-06 20:20 ` Marc-Oliver Ihm
2013-04-06 21:32 ` Thorsten Jolitz
2013-04-06 22:24 ` Michael Brand
2013-04-06 22:40 ` Thorsten Jolitz
2013-04-06 23:01 ` Bill White
2013-04-09 7:29 ` Christian Egli
2013-12-19 19:00 ` Michael Brand
2013-07-31 23:19 ` Ratish Punnoose [this message]
2013-08-01 14:44 ` Thorsten Jolitz
2013-08-01 15:09 ` Rémi Vanicat
2013-08-02 12:22 ` Suvayu Ali
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=loom.20130801T011342-572@post.gmane.org \
--to=ratish@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).