组织模式:从稀疏树返回到之前的可见性

问题描述 投票:0回答:6

将文档过滤到稀疏树后,如何撤消过滤器,返回到之前的视图/可见性?因为我还没有弄清楚如何做到这一点,所以我必须使所有内容都可见,这在大文档中并不好。看起来这一定是显而易见的,但我找不到答案......

emacs org-mode
6个回答
13
投票

根据组织邮件列表中的Bastien,这是不可能的,并且是一个长期的愿望清单项目。


9
投票

我不确定您是否可以返回到之前的视图。但第一步是 C-c C-c ,它将从当前缓冲区中删除临时突出显示/覆盖。


4
投票

这对我来说似乎是可能的。在下面的代码中,我使用一些建议在生成稀疏树之前保存轮廓状态,并在通过 C-c C-c 清除它时恢复它。

(setq lexical-binding t)

(let ((*outline-data* nil))
  (defun org-save-outline-state (&optional arg type)
    (setq *outline-data* (org-outline-overlay-data t)))

  (defun org-restore-outline-state (&optional arg)
    (when *outline-data*
      (org-set-outline-overlay-data *outline-data*)
      (setq *outline-data* nil))))

(advice-add 'org-sparse-tree :before 'org-save-outline-state)
(advice-add 'org-match-sparse-tree :before 'org-save-outline-state)
(advice-add 'org-ctrl-c-ctrl-c :after 'org-restore-outline-state)

它似乎做你想做的事。


2
投票

您可以使用 C-x 2 创建两个窗口,然后切换到另一个窗口,进行稀疏树。完成后,只需返回原始窗口并按 C-x 1 即可关闭稀疏树窗口。


1
投票

您可能无法返回到之前的相同视图。

但是去除备用树效果有3个步骤:

  1. org-agenda-remove-restriction-lock
    删除锁定的项目' 突出显示背景。

  2. org-remove-occur-highlights
    删除前缀的突出显示。

  3. widen
    取消对特殊条目的限制,并扩展到 查看完整文件。


0
投票

解决方案是“org-tree-to-indirect-buffer”函数(它绑定到C-c C-x b)。该函数创建一个新的间接缓冲区并将其限制为当前子树。然后必须在第一步中使用“加宽”函数扩展这个新缓冲区(它绑定到 C-x n w)。

然后您可以在这个新缓冲区中执行任何您想要的操作,而不会影响原始缓冲区的可见性(缩小、稀疏树、突出显示...)。因此,您可以简单地在新缓冲区中过滤和编辑稀疏树。

完成后,关闭第二个缓冲区,您将回到原来的缓冲区,从而返回到之前的视图/可见性。

当然,您也可以自己创建一个新函数来自动化这些步骤。

© www.soinside.com 2019 - 2024. All rights reserved.