【问题标题】:Indentation not working properly in emacs for python缩进在 emacs for python 中无法正常工作
【发布时间】:2014-11-20 05:10:56
【问题描述】:

我在link 使用 gabrielelanaro 提供的 emacs-for-python。

缩进似乎根本不适合我。

当我创建需要自动缩进(if、for 等)的类、函数或任何其他代码块并按 enter 或 Ctrl + j 时,它不会自动发生。相反,emacs 说“算术错误”。

当我在 .py 文件中的任意位置按 Tab 时不会发生这种情况。同样,每次按下Tab 都会导致“算术错误”。

另外,当我使用空格手动缩进代码时,我无法删除这些空格!退格这些缩进也会导致“算术错误”。

当我使用常规的Python AC 模式时也会出现这个问题。

emacs:GNU Emacs 24.3.1(x86_64-pc-linux-gnu,GTK+ 版本 3.10.7) 2014-03-07 在 lamiak 上,由 Debian 修改

【问题讨论】:

  • 可能与this 问题有关?不知道你的配置很难说。
  • @vikramls 如何为您提供我的配置?我是 emacs 新手。
  • 我的意思是您安装的其他软件包 - 您可以在没有任何 init.el 处理 (emacs -q) 的情况下运行 emacs 并尝试有选择地启用软件包吗?我链接的问题有帮助吗?
  • 我不知道该怎么做。这是我的 .emacs 文件:pastebin.com/EebZhxWP。我想你可以知道我用的是哪些包。

标签: python emacs


【解决方案1】:

检查python-indent-offset 的值。如果是0,改成M-x set-variable RET python-indent-offset RET 4 RET

Emacs 在打开 Python 文件时尝试猜测其使用的偏移量。对于某些格式错误的 Python 文件,它可能会感到困惑并将该变量设置为 0。如果这确实是问题,请使用M-x report-emacs-bug 和 Python 文件的文本提交错误报告,以便修复自动检测。

【讨论】:

  • 为我修复了它——它是 0!前几行缩进不正确(没有缩进),显然这会导致 python 包关闭。
【解决方案2】:

和这个bug有关

http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15975

我发现最快的解决方法是将 Jorgens Answer 添加到 .emacs 文件中,在 .emacs 文件末尾添加以下内容

(add-hook 'python-mode-hook
  (lambda () (setq python-indent-offset 4)))

【讨论】:

    【解决方案3】:

    您能否在您的 init.el 中评论与自动完成相关的行?

    ; (add-to-list 'load-path "~/.emacs.d/auto-complete-1.3.1")
    ; (require 'auto-complete)
    ; (add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
    ; (require 'auto-complete-config)
    ; (ac-config-default)
    ; (global-auto-complete-mode t)
    

    【讨论】:

    • 完成。使用Alt X保存和评估缓冲区。重新启动emacs并打开.py文件,但问题仍然存在
    • 您能否尝试禁用 epy-init.el 行,看看 TAB 是否在与 emacs 捆绑在一起的 python 模式下工作?
    • 像这样调用 emacs:emacs -q。然后打开你的 py 文件并尝试 TAB 缩进。实际上打开你的 .py 文件,输入 M-x python-mode 然后尝试 TAB 缩进。
    猜你喜欢
    • 2014-03-06
    • 2012-10-24
    • 2013-02-21
    • 1970-01-01
    • 2013-10-09
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多