窄缓冲区,使用org-match-sparse-tree?

时间:2014-11-10 13:46:18

标签: emacs tags elisp org-mode

我想将Org-mode中的缓冲区过滤为只匹配某些标记的标题。

我尝试C-c /后跟tag1&tag2。但是,Emacs不是缩小缓冲区,而是突出显示具有这些标记的每个标题旁边的星号......

如何更改此设置,以便Emacs实际上将缓冲区缩小到那些匹配的标题?

谢谢!

2 个答案:

答案 0 :(得分:1)

原始海报使用的搜索正则表达式可能不正确。 org-occur用于设置突出显示结果边界的子函数非常简单 - (while (re-search-forward regexp nil t) . . .)匹配模式的开始和结束决定了突出显示区域的边界 - 即{{ 1}}和(match-beginning 0)

要搜索包含 两个标记的标题,请在交互式调用(match-end 0)时使用正则表达式:tag1:\|:tag2:,即< strong>只有一个反斜杠和管道。当非交互式使用org-occur时,需要两(2)个反斜杠和一个管道 - 例如org-occur

在按特定顺序查找两个一起的标签时,正则表达式如下所示:(org-occur ":tag1:\\|:tag2:")

:tag1:tag2:的默认行为是折叠所有内容,然后仅展开匹配的结果 - 以前匹配的结果仍然可见,除非参数org-occur是非空。如果缓冲区看起来完全展开(使用keep-previous进行搜索后),则使用的正则表达式可能与所有内容相匹配

检查并验证当前版本的org-occur是否正在使用org-mode也是谨慎的。


使用M-x org-version RET搜索标记org-occur

的示例

Example http://www.lawlist.com/images/org_occur.png

答案 1 :(得分:1)

执行C-c / m tag1&tag2可以达到您想要的效果 - 除了1级标题(即使它们不包含有用的条目,它们始终可见;但2级以上的条目只有在与您匹配时才可见请求)。

这与C-c / t的工作方式相同(例如当前缓冲区中的所有TODO)。