我在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),但与评论本身无关。也不是奇怪的回车。
答案 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但不会尝试返回到原始缩进级别,从而修复原始问题。