EMACS-DOCUMENT

=============>集思广益

如何自定义org-mode链接(你可以通过org-mode链接做任何事情)

org-mode 有一个鲜为人知的功能,那就是你可以用org-add-link-type 来自定义新的链接类型. 你可以用它来做很多事, 比如, 可以创建一种链接,点击这种链接就会在整个代码库中搜索指定的正则表达式.

(org-add-link-type
 "grep" 'endless/follow-grep-link)

(defun endless/follow-grep-link (regexp)
  "Run `rgrep' with REGEXP as argument."
  (grep-compute-defaults)
  (rgrep regexp "*" (expand-file-name "./")))

这样, 当你在org-mode下点击类似下面的链接时,你会看到一个搜索结果的列表.

** TODO Refactor OldClassName into NewClassName 

1 LINK header arguments

正如 /u/blue1_ 中所指出的, 若你新创建的链接仅仅是对URL做一些替换操作,那你还可以用 #+LINK headers 来实现.

2 Tag Searches

让我们来看看另一个使用场景, 下面代码定义了一种链接,它会搜索你的标题来查找特定的tags.

(org-add-link-type
 "tag" 'endless/follow-tag-link)

(defun endless/follow-tag-link (tag)
  "Display a list of TODO headlines with tag TAG.
With prefix argument, also display headlines without a TODO keyword."
  (org-tags-view (null current-prefix-arg) tag))

然后你可以这一条这样的链接了

其中搜索的语法可以参见 这里, 与 org-tags-view 命令中的用法一样.