我在org-mode中维护日记(包含要记住的想法的内部博客),有时候,当我研究Emacs时,我会通过引用信息文件存储学到的技巧和技巧。
目前,我执行以下操作。我打开所需的信息文件,按 c 复制当前节点名称,按< s TAB - 这是一个easy template,可以展开到src-block。然后我添加lisp表达式并粘贴节点名称,最后链接如下所示:
#+begin_src emacs-lisp
(info "(org) Properties and Columns")
#+end_src
当我需要查看信息文件时,我将光标放在lisp sexp之后并按 C-x C-e (eval-last-sexp)。
这个过程既乏味又不优雅。在org-mode中嵌入信息文件链接的最佳方法是什么?
编辑:我发现了如何添加指向信息节点的链接。 External links上的组织模式手册使用链接描述了这些等效方法:
[[info:org#Tags]]
[[elisp:(info "(org) Tags")]]
对于第一个版本,我不确定如何在(org) Tags
中自动转换org#Tags
。我该如何进一步简化这一过程?
答案 0 :(得分:9)
您可以使用任何支持的链接类型(请参阅手册中的"Handling
links"部分)。在信息文件中,您说M-x org-store-link
,
(按照手册中的建议将其绑定到C-c l
),然后在您的组织中
文件,您插入C-c C-l
的链接。你只需要
从存储的链接列表中选择指向您的信息文件的链接。
答案 1 :(得分:1)
org-store-link
说“无法链接到未访问文件的缓冲区”,因为“信息”会将buffer-name
设置为*info*
,将buffer-file-name
设置为nil
。要解决此问题,社区提供的如何添加链接到手册页(http://orgmode.org/manual/Adding-hyperlink-types.html)的示例可以稍微修改一下:
;; Modified version of contrib/lisp/org-man.el; see
;; (http://orgmode.org/manual/Adding-hyperlink-types.html#Adding-hyperlink-types)
(require 'org)
(org-add-link-type "info" 'org-info-open)
(add-hook 'org-store-link-functions 'org-info-store-link)
(defcustom org-info-command 'info
"The Emacs command to be used to display an info page."
:group 'org-link
:type '(choice (const info)))
(defun org-info-open (path)
"Visit the infopage on PATH.
PATH should be a topic that can be thrown at the info command."
(funcall org-info-command path))
(defun org-info-store-link ()
"Store a link to an info page."
(when (memq major-mode '(Info-mode))
;; This is a info page, we do make this link
(let* ((page (org-info-get-page-name))
(link (concat "info:" page))
(description (format "Infopage for %s" page)))
(org-store-link-props
:type "info"
:link link
:description description))))
(defun org-info-get-page-name ()
"Extract the page name from Info in a hackish way."
;; This works for `Info-mode'.
;; Hackity-hack: copy the node name into the kill ring.
(Info-copy-current-node-name)
;; Just return the kill.
(current-kill 0))
(provide 'org-info)
重要的一点接近结束:由于信息节点名称不能直接访问(不是我可以轻易找到),我们可以通过调用Info-copy-current-node-name
将其放入{{1}中来解决它然后返回kill-ring
中的第一个条目(应该是刚刚插入的节点名称)。
答案 2 :(得分:1)
应该起作用的步骤 - 转到您需要的信息节点,然后按“c”(节点名称将是 进入杀人戒指) - 在您的组织源文件上指出您需要插入链接 按C-c,C-1 - 按Tab键,然后从显示的提示缓冲区(或任何类型)中选择elisp: 你需要的链接)。现在你的迷你缓冲区提示说elisp: - 在':'(info“^”)之后输入这个上下文,让^成为你的 node-name由C-y拉回来 - 按Ret键,然后你会要求填写一些说明 你自己。现在你完成了它,但仍然不知道发生了什么 真。 - M-x,可见性模式,以及如何手动编写该内容 我们现在得出结论,“%20”必须全部替换 在上下文中出现空间。 例如==&GT。自己动手,亲自看看 - 切换您的可见性模式 好运