SpaceMac中带硬制表符的Python缩进已关闭

SpaceMac中带硬制表符的Python缩进已关闭,python,emacs,spacemacs,Python,Emacs,Spacemacs,让我先说一下,我是从vim转换而来的一个相对较新的emacs/spacemacs,所以我的知识还是相当基础的 我用python层设置了SpaceMac,在DotSpaceMac附加包中列出了dtrt缩进的附加包。和背景 (dtrt-indent-mode t) 在dotspacemacs/user配置中。我需要dtrt缩进,因为我正在处理一些项目(在python和lua中),我不是设置缩进规则的人 此配置适用于具有不同长度的软选项卡的python文件。此配置也适用于具有硬选项卡的lua文件 当

让我先说一下,我是从vim转换而来的一个相对较新的emacs/spacemacs,所以我的知识还是相当基础的

我用python层设置了SpaceMac,在DotSpaceMac附加包中列出了dtrt缩进的附加包。和背景

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

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

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

注:如上所述,我在这方面是个新手,我的SpaceMac配置非常稀疏。我的用户配置中没有其他内容,我没有自定义层,除了dtrt缩进之外,我甚至没有任何其他包

编辑:

python缩进偏移量设置为8

缩进制表符模式设置为t


选项卡宽度设置为4

尝试
M-x空白模式
并重复此实验。你看到了什么?你是用空格还是制表符缩进的

我猜你会看到这样的情况:

def·func():
········
»   print·'line'
这意味着您将
python缩进偏移设置为8,
indent tabs mode
设置为nil(也称为带空格的缩进),并且
tab width
设置为4

如果不是这样,那么这些变量的值是什么(
C-hv python缩进偏移量
等)

如果是这种情况,您可以通过运行

(setq-default python-indent-offset 4)

尝试
M-x空白模式
并重复此实验。你看到了什么?你是用空格还是制表符缩进的

我猜你会看到这样的情况:

def·func():
········
»   print·'line'
这意味着您将
python缩进偏移设置为8,
indent tabs mode
设置为nil(也称为带空格的缩进),并且
tab width
设置为4

如果不是这样,那么这些变量的值是什么(
C-hv python缩进偏移量
等)

如果是这种情况,您可以通过运行

(setq-default python-indent-offset 4)

正如编辑中提到的,您的猜测很接近,但仍然正确。缩进实际上是两个硬制表符,而不是8个空格,但将python缩进偏移设置为4确实解决了这一问题。现在我只需要弄清楚为什么dtrt indent设置的值不正确。如果您有任何建议,我将不胜感激。我查看了
dtrt模式
的源代码(
C-h f dtrt模式
,单击
dtrt indent.el
)。它看起来像是继承自
标准缩进
,因此请尝试将
(setq standard indent 4)
放入
.emacs
。如编辑中所述,您的猜测很接近,但仍然正确。缩进实际上是两个硬制表符,而不是8个空格,但将python缩进偏移设置为4确实解决了这一问题。现在我只需要弄清楚为什么dtrt indent设置的值不正确。如果您有任何建议,我将不胜感激。我查看了
dtrt模式
的源代码(
C-h f dtrt模式
,单击
dtrt indent.el
)。它似乎继承自
标准缩进
,因此请尝试将
(setq标准缩进4)
放入
.emacs
中。
(setq-default python-indent-offset 4)