在我对同一个对象使用多个名称绑定的地方,我使用ropemacs得到了一些令人失望的完成和定义结果。
考虑到下面我的人为设计和风格上受到挑战的示例代码,有人知道为什么rope不会呈现完成或定义结果吗?
项目代码示例:
from Package import BigObjectWithLotsOfMethods
class GLOBAL:
variable = None
big = BigObjectWithLotsOfMethods()
GLOBAL.variable = big
有问题的 Emacs 行为:
当我输入:
big.
然后输入M-/,我得到了预期的候选方法名称列表。绳子万岁!
另一方面,当我进入时:
GLOBAL.variable.
例如,然后M-/在 Emacs minibuffer 中输入我得到以下内容:
Completions for GLOBAL.variable.: [No Match]
此外,请想象一种在代码上键入fire()
的方法不会像预期的那样将我带到定义,而只是在 Emacs 迷你缓冲区中输出以下内容:BigObjectWithLotsOfMethods
C-c gGLOBAL.variable.fire()
fire()
Cannot find the definition!
由于GLOBAL.variable
仅代表绑定到BigObjectWithLotsOfMethods
实例的另一个名称,我很惊讶rope 没有做一些智能的事情,比如从它所知道的推断定义big
。
问题:
为什么在存在多个名称绑定的情况下,对代码自省的这种明显微不足道的支持在绳索下不起作用?我是否在我的绳索项目配置中遗漏了一些基本的东西来解决这个问题?
感激地收到任何帮助。