将文档过滤到稀疏树后,如何撤消过滤器,返回到之前的视图/可见性?因为我还没有弄清楚如何做到这一点,所以我必须使所有内容都可见,这在大文档中并不好。看起来这一定是显而易见的,但我找不到答案......
根据组织邮件列表中的Bastien,这是不可能的,并且是一个长期的愿望清单项目。
我不确定您是否可以返回到之前的视图。但第一步是 C-c C-c ,它将从当前缓冲区中删除临时突出显示/覆盖。
这对我来说似乎是可能的。在下面的代码中,我使用一些建议在生成稀疏树之前保存轮廓状态,并在通过 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)
它似乎做你想做的事。
您可以使用 C-x 2 创建两个窗口,然后切换到另一个窗口,进行稀疏树。完成后,只需返回原始窗口并按 C-x 1 即可关闭稀疏树窗口。
您可能无法返回到之前的相同视图。
但是去除备用树效果有3个步骤:
org-agenda-remove-restriction-lock
删除锁定的项目'
突出显示背景。org-remove-occur-highlights
删除前缀的突出显示。widen
取消对特殊条目的限制,并扩展到
查看完整文件。解决方案是“org-tree-to-indirect-buffer”函数(它绑定到C-c C-x b)。该函数创建一个新的间接缓冲区并将其限制为当前子树。然后必须在第一步中使用“加宽”函数扩展这个新缓冲区(它绑定到 C-x n w)。
然后您可以在这个新缓冲区中执行任何您想要的操作,而不会影响原始缓冲区的可见性(缩小、稀疏树、突出显示...)。因此,您可以简单地在新缓冲区中过滤和编辑稀疏树。
完成后,关闭第二个缓冲区,您将回到原来的缓冲区,从而返回到之前的视图/可见性。
当然,您也可以自己创建一个新函数来自动化这些步骤。