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

jay*_*bee 20 emacs org-mode

将我的文档过滤到稀疏树后,如何撤消过滤器,返回上一个视图/可见性?因为我还没有弄清楚如何做到这一点,我必须让一切都可见,这在大文件中并不好.似乎它必须是明显的,但我找不到答案......

jay*_*bee 12

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


xev*_*ent 7

我不确定你是否可以回到之前的确切观点.但是第一步是Cc Cc,它将从当前缓冲区中删除临时突出显示/叠加层.


Joh*_*hin 4

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

(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)
Run Code Online (Sandbox Code Playgroud)

它似乎做你想做的事。

  • `org-outline-overlay-data` 和 `org-set-outline-overlay-data` 已从 Orgmode 中删除:https://code.orgmode.org/bzg/org-mode/commit/013941de86e0f70554ecc5a87abd53562f4be897 (2认同)