3

outline-mode在 emacs 中使用(主要是 org-mode),并用于grep-mode搜索。让我烦恼的是,当我按照grep缓冲区中的链接进行操作时,折叠的文本不会展开。有没有办法让它自动化?

一个类似的问题是在被调用时自动展开goto-line,这可以通过为 goto-line 函数定义一个建议来实现,但是,对于鼠标事件是默认的goto-line并且goto-char不适用于鼠标事件。

更一般地说,当我单击 emacs 中的链接时会发生什么?我试图追踪函数堆栈,但由于 emacs 中使用的事件模式而找不到源。

4

2 回答 2

2

对于您问题的第一部分,这是我使用的技巧。评论如下。

(setq org-directory "~/TOPDIR-OF-ORG-FILES")

(全局设置键“\C-cog”'fp-org-grep)

(defun fp-org-grep (正则表达式)
  (交互式“MOrg grep?”)
  (如果(字符串相等的正则表达式“”)
      (错误“Rien à trouver!”)
    (需要'grep)
    (除非 grep-find-template
      (grep 计算默认值))
    (let ((grep-find-ignored-directories nil)
          (grep-find-ignored-files nil))
      (rgrep 正则表达式“*.org”组织目录))
    (setq fp-org-isearch-string 正则表达式)
    (保存游览
      (设置缓冲区“*grep*”)
      (setq next-error-function 'fp-org-grep-next-error))))

(defun fp-org-grep-next-error (n &optional reset)
  (编译-下一个错误-函数 n 重置)
  (组织揭示)
  (setq isearch-string fp-org-isearch-string)
  (当(或(空搜索环)
            (not (string-equal (car search-ring) fp-org-isearch-string)))
    (push fp-org-isearch-string search-ring)))

(defvar fp-org-isearch-string "")

为了速度,我只保留了三​​个 Org 文件到我的议程中,但定义了一个“Cc o g”命令来递归地遍历我的所有 Org 文件。当您通过常规方式访问任何条目时,Org 周围的上下文就会显示出来。您也可以点击“Cs”来突出显示搜索到的文本。

弗朗索瓦

于 2011-12-09T00:01:04.930 回答
1

我知道您说“问题已解决”,但如果您主要使用的org-modeorg-sparse-tree( C-c /),它可以让您显示与正则表达式(或 TODO 状态或工作流等)匹配的项目的稀疏树。

于 2011-07-03T00:57:13.447 回答