Emacs python-mode.el注释开始一个新行

时间:2012-12-20 18:19:51

标签: python emacs comments indentation python-mode

我在Emacs中使用python-mode.el来编辑一些Python代码,它具有最烦人的功能,它会自动缩进注释然后开始一个新行。例如,如果我有这个:

def x():
    y = 1
<cursor is here, at root indentation level>

然后在根缩进级别添加一个#:

def x():
    y = 1
    #
<cursor is now here>

它自动缩进,插入#,并在#后插入一个回车符。这让我疯狂。我希望我的评论能够完全保留在我放置的位置!有什么建议?

我查看了该模式的elisp代码,找不到任何内容,也无法在网上找到其他任何内容。我所能发现的是,评论不会用于将来的缩进(py-honor-comment-indentation),但与评论本身无关。也不是奇怪的回车。

2 个答案:

答案 0 :(得分:2)

提交了一份错误报告

https://bugs.launchpad.net/python-mode/+bug/1092847

M-x自定义py-electric-comment-p RET

将其设置为“nil”应解决它。

另见变量`py-indent-comments'

答案 1 :(得分:0)

好的,找到了。

违规功能是py-electric-comment。

默认情况下,插入#后可以调用它。你可以通过将py-electric-comment-p设置为nil来禁用它。

您还可以通过编辑函数的这一部分来编辑py-electric-comment:

    (let ((orig (copy-marker (point)))
                (indent (py-compute-indentation)))
      (unless (eq (current-indentation) indent)
            (goto-char orig)  ;;; REMOVE THIS LINE
              (beginning-of-line)
              (delete-horizontal-space)

这将允许您保持启用py-electric-comment但不会尝试返回到原始缩进级别,从而修复原始问题。