1

同じオブジェクトに対して複数の名前バインディングを使用している場所で、 ropemacsを使用すると、残念な完了定義への移行の結果が得られません。

以下の不自然で文体に挑戦したコードの例を考えると、なぜロープが補完や定義に進む結果を提示しないのか知っている人はいますか?

プロジェクト コード サンプル:

from Package import BigObjectWithLotsOfMethods

class GLOBAL:
    variable = None

big = BigObjectWithLotsOfMethods()
GLOBAL.variable = big

問題の Emacs の動作:

私が入るとき:

big. 

と入力M-/すると、期待どおりに候補メソッド名のリストが表示されます。ロープ万歳!

一方、私が入力すると:

GLOBAL.variable.

たとえば、M-/Emacs ミニバッファーで次のように入力します。

Completions for GLOBAL.variable.: [No Match]

さらに、コードを入力しても期待どおりの定義に移動せず、Emacs ミニバッファーに次のように出力されるfire()方法を想像してください。BigObjectWithLotsOfMethodsC-c gGLOBAL.variable.fire()fire()

Cannot find the definition! 

GLOBAL.variableインスタンスにバインドされている別の名前を表すだけなので、BigObjectWithLotsOfMethods私は驚いたことに、ロープが知っていることから定義を推測するような知的なことをしていませんbig

質問:

複数の名前のバインディングが存在する場合、コードのイントロスペクションに対するサポートのレベルが、ロープの下では機能しないのはなぜですか? たとえば、これに対処するロープ プロジェクトの構成に何か基本的なものが欠けていますか?

感謝して受け取った助け。

4

1 に答える 1

0

1 つのレベルの間接化を導入しているため、そのロープはもはやスマートではないと想像する人もいるでしょう。

Rope は役に立たなかったので、しばらく遊んでいなかったことに注意してください。また、少し遅かったです。ほとんどの場合M-/、emacs の代わりに pyflakes/flymake を組み合わせて使用​​します。(最初にメソッドを入力しなければならないという欠点M-/があります)。もちろん、Rope がより多くの価値を提供し始め、費用が少なくなった場合、私はそれを再訪したくなるかもしれません.

py-dev、pycharm エンジンがそれを処理するのに十分スマートかどうか疑問に思います。

于 2010-11-15T21:43:34.493 に答える