1

即使我emacs -Q在其中打开 pure 和 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)

4

1 回答 1

1

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

可能触发“python-indent-line”调用的命令。

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

当变量 last-command' 等于 python-indent-trigger-commands 中的符号之一或 FORCE-TOGGLE 为非零时,它通过在变量中设置当前级别来循环变量 python-indent-levels 中指示的级别`python-indent-current-level'。

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

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

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

于 2014-03-10T11:06:46.520 回答