Answers:
从2017年1月22日开始,如果您设置org-src-tab-acts-natively
和org-src-fontify-natively
,则源代码块中的TAB将扩展该块语言的摘要。您可能希望设置yas-buffer-local-condition
为阻止组织模式代码段遮盖阻止模式的代码段:
(defun my-org-mode-hook ()
(setq-local yas-buffer-local-condition
'(not (org-in-src-block-p t))))
(add-hook 'org-mode-hook #'my-org-mode-hook)
另请参见https://github.com/joaotavora/yasnippet/issues/761,https://github.com/joaotavora/yasnippet/pull/760
为此,我使用两种方法。我有一些组织摘要可帮助我创建babel标头。例如,此代码为Babel创建C ++-14标头。我输入<s C++_
并展开:
# -*- mode: snippet -*-
# name: c++_header
# key: C++_
# --
C++ :main no :flags -std=c++14 -Wall --pedantic -Werror :results output :exports both
#include <iostream>
int main()
{
$0
return 0;
}
然后,我使用Cc'切换到特定的语言模式,并使用该语言的代码段。然后使用Cc'返回到org文件。它运作良好。
正如npostavs已经回答的那样,根据一个组织模式文件中的语言,代码片段的扩展方式有所不同。
只需在Python或Emacs Lisp代码块中键入“ co”和[tab]。
#+BEGIN_SRC python :session *Python* :results output
co[tab]
# comment
#+END_SRC
#+BEGIN_SRC emacs-lisp :results value scalar
co[tab]
; comment
#+END_SRC
C-c '
无论如何都要编辑这些块-在这种情况下,emacs-lisp主模式会在单独的窗口中编辑块时加载适当的yasnippet代码段(这也要注意正确的缩进)等)