webdevqa.jp.net

Emacs 23に同梱されているpython.elがロードされないようにするにはどうすればよいですか?

pythonの作業には、python.elの代わりにpython-mode.elを使用し、すべてのカスタマイズはそれに依存します。ただし、定期的に何らかの理由で、Emacs23に付属するpython.elは魔法のように動作します。ロードされると、突然すべての構成がウィンドウから消えてしまいます。

どうすればこれを防ぐことができますか?現在、.emacsに次のコードがあります。

(if featurep 'python)
    (unload-feature 'python))

これにより、このような事態が発生する可能性が低くなるようですが、同じセッションでpythonファイルを開くことがあります!-代わりにpython.elpython-modeを取得しますpython-mode.elバージョンの。それでも、次のバッファはまだ古いモードを持っています。

これはすぐに私にバナナを運転しています!

7
Chris R

それはすべて、.emacsをどのように設定したかによって異なります。

デフォルトでは、関数'python-modeはパッケージpython.elに関連付けられています。次のように変更する必要があります。

(autoload 'python-mode "python-mode" "Python Mode." t)

これは、python-modeパッケージがすでにload-pathにあることを前提としています。また、何かがpython.elをロードする前に、上記が.emacsで発生することを確認する必要があります。

これらの他の2行はおそらく必要ありませんが、害はありません。

(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))

それでも問題が解決しない場合は、さらに情報が必要になります。


もう1つの方法は、python.elから自動ロードされる関数をオーバーライドすることです。Emacs23.1以降は次のとおりです。

(defun run-python (&rest args) nil)
(defun python-mode (&rest args) nil)
(defun jython-mode (&rest args) nil)
(defun python-Shell (&rest args) nil)

それらを.emacsで定義した場合、Emacsが設定する自動ロードは効果がありません。 python-mode.elを手動でロードする必要があります(python-modeの自動ロードを実行する必要がないため(その関数を定義したため))。 python-mode.elを次のようにロードします。

(load "/path/to/python-mode.el")
8
Trey Jackson

再び発生した場合は、python-mode.elにもバグがあることを示しています。 Python-mode.el –それが私の努力です–は、ロードされてもpython.elが邪魔にならないように設計する必要があります。

場合によっては、 バグトラッカーのエントリ を作成してください。

2
Andreas Röhler

良いことの1つは、load-history変数を介してファイルの読み込みの依存関係を検査することです。その中の短所(require . python)を検索します。この短所は、ロードされたファイルに関連付けられます。これは、負荷の依存関係を理解し​​、さまざまなpythonモードの負荷シーケンスを変更するために役立つ場合があります。

Python.elとpython.elcをロードしないようにするには、emacsのインストールファイルでそれを削除します。そして、これをinitファイルに追加します。

(autoload 'python-mode "python-mode")

ただし、他のパッケージがそれに依存しているためにそれができない場合は、initファイルに次のように入れることができます。 python.elの後にpython-mode.elをロードし、その定義をオーバーライドします。

(require 'python) (require 'python-mode)

私は同じ問題を経験しました。 init.elに適切な(require 'python-mode)フォームがあり、python.elへのロード要件はありませんが。私の場合、python.elは、私の設定を上書きしたpython-mode.elの後にロードされ続けました。これは、python.elを読み込もうとするsemantic/wisent /python.elが原因でした。

1
montrivo

Python.el(そしておそらく.elc?それはまだコンパイルされたファイルの拡張子ですか)を簡単に削除できるはずです

1
chris

次のリンクも関連している可能性があります。

http://permalink.gmane.org/gmane.emacs.cedet/4935

私はpython-modeを使用しており、上記のアドバイスされたコードが.emacsに含まれているにもかかわらず、次のようなことをしなければなりませんでした。

M-x py-pdbtrack-toggle-stack-tracking  ; followed by..
M-x python-pdbtrack-toggle-stack-tracking

..実際に機能をオフにします。

原因は、いくつかの一般的な変数defの再読み込みを引き起こしたwisent-python.elpython.el依存関係でした。とにかくそれ(このファイルを必要とするコード)が設定するインクルードパスをすでに手動で定義しているので、(require'python nil t)にコメントしました。

0
elbeardmorez