问题描述
即使当我打开纯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)
yasnippet
(yas-global-mode 1)
再次带来了它。
那就是我找不到原因的地方。
如果您遇到此问题(python + yasnippet +正确的缩进),请给我一个提示。 或者只是指向有效配置的链接。
最新的Emacs(24.3.50.1)
1楼
使用TAB控制循环的一种方法是自定义python-indent-trigger-commands
。
变量状态的文档字符串
可能触发“ python-indent-line”调用的命令。
但是,从文档字符串中尚不清楚该变量可用于控制循环(实际上,我什至不确定是否设置了控制缩进循环的正确方法来设置此变量)。
python-indent-line
的文档字符串更好地解释了此变量的用途
当变量last-command'等于python-indent-trigger-commands中的符号之一或FORCE-TOGGLE为非零时,它将通过在变量中设置当前级别来循环变量python-indent-levels中指示的级别`蟒蛇缩进电流级别”。
因此, (setq python-indent-trigger-commands nil)
(或者您可以从列表中删除indent-for-tab-command
)可用于禁用缩进循环。
这种方法有一个轻微的缺点,即您不能使用TAB缩进代码(如下所示),否则for
或if
关闭。
for ..:
if ..:
...
break
else:
...
您将在else
之前先按退格键以使其缩进,以使其关闭for
(默认情况下,将缩进其以使其闭合if
)