2010-11-15 45 views
1

我得到了一些令人失望的完成去到清晰結果與ropemacs在我使用多個名稱綁定到同一個對象的地方遇到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] 

此外,請想象一下fire()BigObjectWithLotsOfMethods的方法然後打字抄送g代碼GLOBAL.variable.fire()不帶我去的fire()定義爲預期而只是輸出中的Emacs迷你緩衝區如下:

Cannot find the definition! 

由於GLOBAL.variable僅代表另一個名稱綁定到BigObjectWithLotsOfMethods比如我感到意外的是繩子不做某事聰明就像根據它所知道的關於big的推測來定義。

問題:

爲什麼是支持這樣一個顯然微不足道的水平代碼自省多個名稱存在結合下繩子不工作?我是否在我的繩子項目配置中缺少一些基本的東西,例如解決這個問題?

任何幫助感激地收到。

回答

0

人們會想象,因爲你引入了一個間接層級,那根繩子不再聰明。

注意我在一段時間裏還沒有玩過繩子,因爲我發現它的方式不僅僅是幫助。它也有點慢。主要使用M-/,而不是在emacs上使用pyflakes/flymake的組合。 (M-/的一個缺點是您必須首次輸入該方法)。當然,如果繩索開始給予更多的爆炸並降低成本,我可能會試着重新審視它。

我想知道py-dev,pycharm引擎是否足夠聰明來處理它。