emacs组织模式下的ISO转换
问:在emacs组织模式下有没有办法进行转换 我所说的“转换”,是指在fileA.org和fileB.org中的某个地方,包括“fileInc.org”,以及让fileInc.org中的树出现在这两个地方。实际出现,而不仅仅是被链接到。 (可能带有条件包含、转换,例如嵌套深度(***个数)) 我知道#setupfile,但这似乎只适用于模式,而不适用于真实文本 我知道, 但恐怕他们只在出口时工作 我要找的东西,在正常的emacs组织模式缓冲工作。 (实际上,在非组织模式缓冲区中工作的东西可能很好。) 我有锅炉板,我想包括在多个文件emacs组织模式下的ISO转换,emacs,include,org-mode,transclusion,Emacs,Include,Org Mode,Transclusion,问:在emacs组织模式下有没有办法进行转换 我所说的“转换”,是指在fileA.org和fileB.org中的某个地方,包括“fileInc.org”,以及让fileInc.org中的树出现在这两个地方。实际出现,而不仅仅是被链接到。 (可能带有条件包含、转换,例如嵌套深度(***个数)) 我知道#setupfile,但这似乎只适用于模式,而不适用于真实文本 我知道, 但恐怕他们只在出口时工作 我要找的东西,在正常的emacs组织模式缓冲工作。 (实际上,在非组织模式缓冲区中工作的东西可能很好
这样的东西存在吗?嗯。。。我不认为存在这样的情况,但编写一个动态块来实现这一点非常简单。以下elisp适用于我:
(defun org-dblock-write:transclusion (params)
(progn
(with-temp-buffer
(insert-file-contents (plist-get params :filename))
(let ((range-start (or (plist-get params :min) (line-number-at-pos (point-min))))
(range-end (or (plist-get params :max) (line-number-at-pos (point-max)))))
(copy-region-as-kill (line-beginning-position range-start)
(line-end-position range-end))))
(yank)))
然后,要包含给定文件的行范围,可以创建动态块,如下所示:
#+BEGIN: transclusion :filename "~/testfile.org" :min 2 :max 4
#+END:
并自动填充C-C-x C-u
。跳过“最小”和“最大”参数以包含整个文件。请注意,您可以将org update all dblocks
绑定到一个钩子,以便在访问文件或保存时更新此范围
有关动态块的详细信息,请访问。希望这有帮助 有没有人把它改编成特别的头条新闻?我还没有发现任何公开的东西(我在这里发布了一个相关问题,如果有人发现或制作了类似的东西,最好能像
#+INCLUDE
那样使用标记。请解释一下,函数名称中的列是什么意思?