一个关于org-mode里descriptive list的缩进问题


#1

一开始我输入第一个列表的时候,是这样的:

10

这个时候我按RETTAB产生一个子列表,变成了这样:

17

可以看到org-mode把子列表缩进到了父列表的描述那里。然后我用M-RET自动生成第二个子列表的item,变成了这样:

27

可以看到org-mode按照某个变量的值(可能是org-indent-indentation-per-level之类)在生成第二个列表元素之前缩进了一下。

我的问题是,在嵌套的描述列表里能否让org-mode只按某一种方式来缩进?

另外,如果此时再执行indent-buffer,缩进又会变成另一种了。。。


#2

TAB(图2)是对内容的缩进,受 org-list-description-max-indent 的影响:若 descriptive list 的第一行的 description 和内容长度之和 超过 org-list-description-max-indent,则缩进值为 5 ,否则缩进到 ::后面内容处。

参考函数 org-list-item-body-column


M-RET(图3)是自动插入 descriptive list,调用函数 org-insert-item,受 org-list-indent-offset 的影响。


#3

非常感谢!我等下就看下~


#4

我试了一下把org-list-description-max-indent设成 0或 2,此时 TAB 的缩进看起来是 5(不算-空格的话是 3)。

然后M-RET的时候,还是会再缩进一次变为缩进 2,此时我看了一下org-list-indent-offset的值却是 0。。

有没有非常简单的方法,可以令它变成跟普通列表一样,子列表缩进任何情况都为 2。。


#5

可能作者这么做是为了分清 descriptive list 和普通的 list 吧。

不清楚有没有其它更好的方法,可以试试把函数 org-list-item-body-column(+ ind 5) 这行改为 (+ ind 2)


#6

我理解可能是为了区分,但为什么M-RET的时候又让它变。。。无法理解作者。。试了,还是不行。。哪种方案都没问题,我只是想让它在更种环境、操作下都保持不变。。


#7

我这里将 5 改为 2 是可以的,保险起见我也将 org-list-description-max-indent 设置为了 0。

要不用 emacs -q 启动试试。