1

让我先说我是从 vim 转换而来的相对较新的 emacs/spacemacs,所以我的知识仍然很基础。

我用 python 层设置了 spacemacs,在 dotspacemacs-additional-packages 中列出了额外的 dtrt-indent 包。并设置

(dtrt-indent-mode t)

在 dotspacemacs/用户配置中。我需要 dtrt-indent 因为我正在处理一些项目(在 python 和 lua 中),而我不是设置缩进规则的人。

此配置适用于具有不同长度的软标签的 python 文件。此配置也适用于具有硬标签的 lua 文件。

当我打开一个带有硬标签缩进的 python 文件时,似乎有些东西搞砸了,它似乎认为缩进是两个硬标签。意思是,如果我有这样的代码(假设 4 个空格是制表符):

def func():|  <--- Cursor
    print 'line'

然后按回车,我得到:

def func():
        |  <--- Cursor
    print 'line'

状态行打印 dtrt-indent 的消息说:

Note: indent-tabs-mode adjusted to t

注意:如前所述,我对此很陌生,而且我的 spacemacs 配置非常稀疏。我的用户配置中没有其他内容,我没有自定义层,除了 dtrt-indent 之外,我什至没有任何其他包。

编辑:

python-indent-offset 设置为 8

缩进标签模式设置为 t

制表符宽度设置为 4

4

1 回答 1

5

尝试M-x whitespace-mode并重复这个实验。你看到了什么?你是用空格缩进还是用制表符缩进?

我猜你会看到这样的东西:

def·func():
········
»   print·'line'

这意味着您已python-indent-offset设置为 8,indent-tabs-mode设置为 nil(也称为空格缩进),并tab-width设置为 4。

如果不是这种情况,这些变量(C-h v python-indent-offset等)的值是多少?

如果这种情况,您可以通过运行来解决问题

(setq-default python-indent-offset 4)
于 2016-06-16T23:01:06.183 回答