Grey
全部学习内容汇总: GitHub - GreyZhang/g_org: my learning trip for org-mode
1840_emacs org-mode babel的语言支持
主题由来介绍
Babel是org-mode中支持文学式编程以及可重现研究的一个核心模块,之前看过这个插件的优点是功能完善且支持的语言比较多。这一次的内容,主要是看看Babel支持哪些编程语言以及是不是有什么特性。
参考文档以及解读
这部分资料还是主要参考官方文档,如下是文档链接:
Babel: Languages
简单的功能小结
- Babel支持百种编程语言
- 随着emacs发布的语言支持多达三四十种
- 历史原因,还有十几种跟随org发布
- 针对不支持的语言,也有一个扩展的指导说明
功能包值得注意的地方
emacs内置的编程语言支持之前做其他小结的时候引用看过了,这里不再赘述。看一下随着org发布的表格描述如下:
这么看,其实跟随org发布的主要是一些没有使用GPL许可证分发的一些语言。
这些随着org发布的也有一些我熟悉或者直接用了不少的编程语言。其实不仅是这些,包括伴随着emacs发布的那些,在每一种编程语言对应的链接部分都有对应语言的说明文档。针对我目前经常用的,还是有必要去仔细阅读一下的。
实际探索体验以及效果
这是如何激活一个语言的说明,之前看多语言支持的文学编程以及可重现研究的论文的时候也接触了一点。当时是因为我自己的测试中,发现python代码不执行。其实根本原因就在于,对应的语言支持没开。
如果要开启常用的几种编程语言的支持,可以在emacs的配置中增加如下配置:
;; configurations for babel
;; only use when you want to use code evaluation.
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)
(emacs-lisp . t)
(perl . t)
(C . t)
(scheme . t)))
上面的语言的支持配置,其实只有在需要执行代码的时候才需要。如果只是文学式编程,这些功能看起来没有开启的必要,因此,我自己的配置中保留了但是禁用了,以此保证我配置的最小化。
小结
通过这一部分文档的阅读,看得出来如果只是做简单的文学式编程的化,其实目前的功能支持基本上没有什么语言的限制了。因为文档与代码的混合以及代码的tangle等,都不涉及到对语言支持的定制。或许,Babel的功能支持更多在于对可重现方面以及数据处理方面的一些支持。但是这些目前来说,并不是我很期待关注的部分。由此,前面提到的各语言的支持文档只需要做一个泛泛的了解应该就可以继续我个人工作流的定制改进了。