插入任意代码片段
#+begin_src elisp
#+DATE: 2019
#+CATEGORY: Linux
#+end_src
只要是以#+
开头,C-c '
编辑,再C-c '
返回之后,都会自动在#+
前加上一个,
#+begin_src elisp
,#+DATE: 2019
,#+CATEGORY: Linux
#+end_src
插入任意代码片段
#+begin_src elisp
#+DATE: 2019
#+CATEGORY: Linux
#+end_src
只要是以#+
开头,C-c '
编辑,再C-c '
返回之后,都会自动在#+
前加上一个,
#+begin_src elisp
,#+DATE: 2019
,#+CATEGORY: Linux
#+end_src
这个不是BUG,如果代码段中的行是以 *
和 #
这样的字符开头,都会被转义。在导出为HTML时会被自动去掉。
原来是这样的,请问一下有什么方式可以禁止这样的行为吗?看起来总是很别扭
翻源码找到一种临时解决的方式,只是不知道对其它模块有没有影响
(fset 'org-escape-code-in-region 'ignore)
为什么要在 Elisp 代码里面插入 #+ 呢?这样输出别的格式时会出错的,而且可能导致以后debug别的地方时找不到原因。
我是把org-mode当作文档来用的,类似markdown,可能会插入一段包括#+
的示例代码
如果你举的例子是org-mode里面嵌套org-mode,那么我可以理解为什么要加#+
,比如
#+begin_src org
,#+TAGS: @home(h) @office(o)
,#+begin_src org
,* Test Heading :@home:
,#+end_src
#+end_src
这是正确的。是Org-mode为了防止错误转义,给里面那一层的#+
前面加了,
。
但是你举的例子是Elisp代码,而#+
在Elisp代码里本来就是不合法的。所以我不明白你这么加的意图是什么。
#+begin_src emacs-lisp
,#+ (+ 2 2)
#+end_src
总而言之,当你C-c '
之后拿到的就是native mode的buffer,不应该在里面用那个mode本来就不合法的片段,再次C-c '
退出之后也不应该删掉Org为了转义而做加,
的修改,这些会影响后续操作。只是觉得不美观的话,可以自行设定prettify-symbols-alist
,把,#+
显示成#+
。