2

Emacs で python-mode.el を使用していくつかの Python コードを編集していますが、コメントを自動インデントしてから新しい行を開始する最も厄介な機能があります。たとえば、これがある場合:

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

次に、ルート インデント レベルで # を 1 つ追加します。

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

自動的にインデントし、# を挿入し、# の後にキャリッジ リターンを挿入します。それは私を夢中にさせています。コメントを置いた場所に正確にとどめたい! 助言がありますか?

モードの elisp コードを調べましたが、まだ何も見つからず、オンラインの他の場所でも何も見つかりません。私が見つけることができるのは、コメントが将来のインデント(py-honor-comment-indentation)に使用されないことだけですが、コメント自体に関連するものは何もありません。奇妙なキャリッジリターンもありません。

4

2 に答える 2

2

にバグレポートを提出しました

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

Mx Customize py-electric-comment-p RET

「nil」に設定すると解決するはずです。

変数「py-indent-comments」も参照してください

于 2012-12-21T10:29:19.937 に答える
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を有効にしたままにすることができますが、元のインデントレベルに戻ろうとせず、元の問題を修正できます。

于 2012-12-20T18:34:11.430 に答える