当我按照内部链接时,我希望org-mode自动缩小为子树。因此,在this thread之后,我将此代码添加到我的init.el文件中:
(add-hook 'org-follow-link-hook (lambda () (org-narrow-to-subtree)))
这很有效。但是......当我按照外部链接(如网页的URL)时,它也缩小到当前子树。
是否有某种方法可以返回链接类型属性(内部对外部),以便我可以限制此行为?
像这样......
Org-follow-link hook
If link type==internal
Narrow
End if
谢谢!
答案 0 :(得分:0)
您可以包装该功能并检查您是否处于不同的状态 缩小之前的位置。
(defun my-org-open-at-point ()
(interactive)
(let ((starting-loc (point)))
(call-interactively #'org-open-at-point)
(when (not (equal starting-loc (point)))
(org-narrow-to-subtree))))
(define-key org-mode-map [remap org-open-at-point] 'my-org-open-at-point)
这适用于内部链接,但我认为链接失败了 Emacs中的其他文件(可以使用标记修复)。这个 但是没有发生,因为当前的缓冲区保持不变。
(defun test-org-open-at-point-which-buffer ()
(interactive)
(message "before call: %s" (current-buffer))
(call-interactively #'org-open-at-point)
(message "after call: %s" (current-buffer)))
我没有查看org-open-at-point
的来源以找出原因
那是。
顺便说一下,要获取链接类型,可以使用
(org-element-property :type (org-element-context))
当点在链接上时。