org插入src时貌似有bug

插入任意代码片段

#+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,把,#+显示成#+

1 个赞