使用组织速度缩小到子树

时间:2014-11-08 22:51:44

标签: emacs elisp org-mode

我想使用org-velocity作为导航大型.org文件的主要方法,但有以下更改:

  1. 在org-velocity中运行搜索后,我希望缓冲区在我做出选择后自动缩小到该子树。

  2. Org-velocity应该对整个文件进行搜索,即使缓冲区变窄也是如此。

  3. 对于第(1)部分,我认为这样的事情应该有效:

    (add-hook 'org-follow-link-hook (lambda () (org-narrow-to-subtree)))

    但这不是正确的勾手。不知道如何处理(2)。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我正在为问题的第(2)部分写一个部分答案,因为以下内容并不适合评论。请注意,我不使用org-velocity。因此,以下内容尚未经过实际测试。 save-restriction将当前缩小值保存到组织子树,widen在搜索过程中暂时删除此缩小范围。要查看其确切的工作方式,请阅读函数save-restrictionwiden的帮助,其中 Ch f 并查阅info Ch elisp的kbd> i 以及“建议功能”部分。

(defadvice org-velocity (around search-all activate)
  "Widen for search with org-velocity"
  (save-restriction
    (widen)
    ad-do-it
    ))

答案 1 :(得分:1)

好的,我想我有一个完整的解决方案!

  1. 确保安装了此org-velocity分支:

    https://github.com/Fuco1/org-velocity

  2. 打开你的org-velocity.el文件并用以下代码替换第763-765行:

    (progn
      (with-current-buffer (org-velocity-match-buffer)
        (kill-buffer-and-window))
      (org-narrow-to-subtree)
      (show-all))))))
    

    附加代码告诉org-velocity首先将缓冲区缩小到选定的子树,然后扩展该节点。

  3. 将此代码放在搜索路径中的某个位置(init.el,.emacs等)

    (defadvice org-velocity (around search-all activate)
       "Widen for search with org-velocity"
       (widen)
       ad-do-it)
    

    就是这样!

  4. 谢谢托比亚斯,保罗和马图斯带我走过这个!!

    小心,

    - 亚当