2

私はEmacsでこのコードをpython-mode有効にして持っています:

def func(a):
    if a:
        return True
    return False

カーソルを移動するreturn Falsedef func(、コードが自動的にインデントされ、コードが壊れます:

def func(a):
    if a:
        return True
        return False #Oops!

electric-indent-modeこれは、マイナー グローバル モードが原因であることがわかりました。ただし、オフにしようとしましたが、問題は残ります。

私が使用するelispコードは次のとおりです。

(defun disable-electric-indent ()
  (set (make-local-variable 'electric-indent-functions)
       (list (lambda (arg) 'no-indent))))

そして、これが私のpython-mode-hook見た目です:

(add-hook 'python-mode-hook
          (lambda ()
              (flyspell-prog-mode)
              (auto-complete-mode)
              (nlinum-mode)
              (toggle-truncate-lines t)
              (setq autopair-handle-action-fns
                    (list 'autopair-default-handle-action 'autopair-python-triple-quote-action))
              (centered-cursor-mode)
              (auto-indent-mode)
              (autopair-mode)
              (column-marker-1 80)
              (flycheck-mode)
              (setq ac-auto-start 2)
              (disable-electric-indent) ;; esto deberia hacer que emacs deje de romper las pelotas con el codigo en python
              (jedi:setup)))

この動作をオフにauto-indent-modeすると停止します (ただし、自動インデントは得られません、glol)。

私のemacsバージョン:GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.1) of 2013-04-29 on eric

EDIT:メルパによるとpython、そのバージョンでパッケージ(Emacs用の組み込みのPythonのフライングサーカスサポートを使用しています)を使用しています。0.24.2おそらく、それを削除してpython-mode、バージョン 6.0.10 のパッケージを使用する必要がありますか?

4

4 に答える 4

3

あなたは試してみたいかもしれません

(defun my-disable-electric-indent ()
  (set (make-local-variable 'electric-indent-mode) nil))
于 2013-06-14T02:44:53.827 に答える
0

に移行してpython-mode.el、コードを残してオフにしましたelectric-indent-mode:)

于 2013-06-15T04:53:53.647 に答える