[已解决] org-babel src blocks 设置缩进

我的 org-babel src blocks 摁 TAB 默认是 8 个空格,请问怎么设置成 4 个空格?

我在网上搜 how to set indentation in emacs babel 得到的结果都不太令人满意。

(add-hook 'c-mode-common-hook (lambda ()
                           (c-set-style "bsd")
                           (setq tab-width 4)
                           (setq c-basic-offset 4)))

请问这个是在哪里加呢? 是在 init file 中加么?

如果是的话,我用的是 陈斌 的配置 ,我在 他文章里提到的 ~/.custom.el 里加上了这段,但是并没有起作用

我没有使用 chenbin 的配置。看了下代码,cc-mode 默认也是4个字符空格。你最好检查下当前 buffer 下的这两个值是否正确:tab-widthc-basic-offset

跟 org-mode 没有关系吧,检查一下你的 cc-mode 相关设置,编辑 .c 文件试试。

不建议手动编辑 custom.el 文件,应该用配置代码来操作 custom.el

.c 文件里缩进是 4 个空格的,就是在 org-babel 里缩进是 8 个空格

#2 楼的代码放在 init.el 试过了吗?

因为我用的是 陈斌 的配置,所以我按照 他文章的推荐,放的是 ~/.custom.el

edit: 我把二楼的配置放到 init.el 中也试了下,没有效果

我在这个 buffer 里使用 M-x describe-variable 查看了这两个变量,分别如下

其中这个 c-basic-offset 的值在我的 .c 文件里是 4

但是我在 org-babel 中查看变量 c-basic-offset,其值为8。 然后点了 cc-vars.el 定位到的函数设置的值是4

请问这种情况该怎么办呢?

Org src blocks 使用设置语言的major mode。C 语言默认使用 c-mode。之前给的配置有点笔误,猜想你直接照抄没有检查过。我修改过了,你更新下。如果还不行,你需要检查下当前 buffer 的这两个变量:c-mode-hookc-mode-common-hook,里面是否有其他的配置覆盖了。

(add-hook 'c-mode-common-hook (lambda ()
                           (c-set-style "bsd")
                           (setq tab-width 4)
                           (setq c-basic-offset 4)))
1 个赞

这次好了,谢谢你:smile:

不客气~~~