gpt4 book ai didi

python - 使用 yasnippet、Emacs 在 python 模式下缩进错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:31:50 33 4
gpt4 key购买 nike

即使我打开纯 emacs -Q 和其中的 python 文件:

| - 光标

if smth:
| print("asd") # press TAB and cursor moves to "p" symbol, it's ok

if smth:
|print("asd") # press TAB and I get this:

if smth:
print("asd") # press TAB and I get prev step

因此 TAB 循环改变缩进级别。我绝对不想这样做。
如果使用smart-tab问题就可以解决。但是 yasnippet (yas-global-mode 1) 再次带来了它。
这就是我找不到原因的地方。

如果您遇到此问题(python+yasnippet+正确的缩进)-请给我一个提示。或者只是一个工作配置的链接。

最新 Emacs (24.3.50.1)

最佳答案

使用TAB控制循环的一种方法是自定义python-indent-trigger-commands。变量状态的文档字符串

Commands that might trigger a `python-indent-line' call.

但是从文档字符串中并不清楚该变量可以是用于控制循环(实际上我什至不确定是否设置这个变量(如果控制压痕循环的正确方法)。这python-indent-line 的文档字符串更好地解释了该变量的用途

When the variable last-command' is equal to one of the symbols inside python-indent-trigger-commands or FORCE-TOGGLE is non-nil it cycles levels indicated in the variable python-indent-levels by setting the current level in the variable `python-indent-current-level'.

因此 (setq python-indent-trigger-commands nil) (或者您可以从列表中删除 indent-for-tab-command )可用于禁用缩进循环。有这种方法的一个小缺点是您不能使用 TAB 缩进代码,如下所示可以关闭 forif

for ..:
if ..:
...
break
else:
...

您将在 else 之前按退格键来重新缩进它,以便它关闭for(默认情况下,它将缩进以关闭if)

关于python - 使用 yasnippet、Emacs 在 python 模式下缩进错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22287201/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com