【问题标题】:Banish unmatched top-level trees when performing tag search in Emacs Org Mode在 Emacs Org 模式下执行标签搜索时消除不匹配的顶级树
【发布时间】:2011-09-29 20:04:43
【问题描述】:

在过去的一年半里,我在 Org 模式下为我与当前雇主的工程笔记维护了一个整体缓冲区。尽管主要包含指向其他文档的指针,但按照人类标准(48,290 行文本),这个文件已经变得相当大,同时通过编程方式(阅读:grep 和 Org 模式标签搜索)仍然可以轻松搜索和编辑。

不过,有一件事困扰着我。当我执行tag search using Org Mode 6.33x 时,Org 的稀疏树视图会保留缓冲区内不匹配树的折叠表示(即,内容前面有一个星号,*)。这对于较小的缓冲区或更好地组织成具有多个分支的单个树的缓冲区通常很有用。但是,这对于按时间顺序生成每棵新树的文档来说并不是特别有效,就像我一直在做的那样,每天生成一棵。

.

在我继续之前,我会注意到我的解决方法是我刚才询问的内容所固有的,我的文档习惯使用此缓冲区的明显改变也是如此。但是,仍然存在以下问题:

1) 为什么 Org Mode 在进行稀疏标签搜索时会以这种方式组织树?技术细节是不言而喻的,而用户体验决策则不那么重要。

2) 如果我想用 Emacs Lisp 编写的脚本来纠正这个问题,我应该更详细地探索哪些钩子和命令来重构文档视图?为标准命令(例如,org-match-sparse-tree)编写覆盖已经是不言而喻的。

.

提前谢谢你。

【问题讨论】:

  • 如果你在这里没有得到好的答案,那么try the orgmode list
  • @Tom 我同意。谢谢指点。
  • 我不清楚您所说的“不匹配树的折叠表示”是什么意思。你能用一个小例子来编辑这个问题吗?
  • @suvayu 在这里回答很简单。当使用稀疏树视图时,不包含匹配结果的顶级树继续在缓冲区中显示为单个 * 项目符号项。当缓冲区中存在许多顶级树时,这是有问题的,以至于即使它们的折叠表示也会给搜索添加噪音。从字面上看,这是一个看不到适合森林的树木的问题。
  • @MrGomez 好的,我明白了。但我认为如果没有自定义 lisp 代码,这是不可能的。虽然不是解决方案,但对于一些想法,您可以查看我的组织配置here 中的函数“org-tags-search-to-buffer”。我猜你必须编写自己的稀疏树函数,并根据自己的喜好设置标题的可见性。

标签: emacs view elisp user-experience org-mode


【解决方案1】:

正如您已经注意到的那样,该问题仅影响顶级标题。好消息是在 org 模式下,您可以通过简单的击键轻松降级所有标题。这样你就可以避免这个问题。事后清理也只是一些简单的按键操作。

分步说明:

  • 标记整个缓冲区
  • 呼叫M-right(为outline-demote
  • 在文件开头输入* root\n
  • 现在,构建您的子树并用它做您想做的事。
  • 完成后,您可以删除文件开头的 * root\n 并使用 M-left 再次提升标题

我的印象是,您甚至可以将总体标题留给您的应用程序。

【讨论】:

    猜你喜欢
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2012-09-27
    • 2013-04-02
    相关资源
    最近更新 更多