ropemacs使用教程

78
有许多网站提供安装Ropemacs的指南,但到目前为止,我还没有找到任何关于如何在安装后使用它的说明。我已经安装了它,至少看起来是这样的,Emacs的顶部菜单栏中有“Rope”菜单。现在怎么办?到目前为止,我只能使用“显示文档”(默认情况下为C-c d)。尝试使用代码辅助(自动完成,我假设?)会导致Emacs询问minibuffer中的“Rope项目根文件夹”(那是什么?),然后什么也不显示。
因此,一旦安装了ropemacs,看起来像一些简单的python脚本中的步骤是什么来让它发挥作用呢?像“如果你在emacs中有这个脚本,并把闪烁的方框放在这里,按下这个,它会做那个”的东西就是一个答案。
(我一直在思考是否应该提出这个问题,因为似乎没有其他人有同样的问题)
4个回答

63

首先,您需要选择项目的根文件夹。简单来说,这是您的项目的顶级文件夹,如果您正在处理单个文件,则为当前文件夹。选择了根文件夹后,其他选项才能正常工作,例如代码辅助、显示文档、跳转到其他符号等。

为了充分发挥ropemacs的作用,建议获取autocomplete.el,将其放置在~/.emacs.d中,然后将以下内容添加到您的.emacs文件中。

(add-to-list 'load-path "~/.emacs.d/")
(add-to-list 'load-path "~/.emacs.d/auto-complete-1.2")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'python-mode)
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)
(pymacs-load "ropemacs" "rope-")
(setq ropemacs-enable-autoimport t)

(require 'auto-complete)
(global-auto-complete-mode t)

假设您在~/.emacs.d/auto-complete-1.2中安装了自动补全。这样做后,只需要输入单词或符号的一些字符,就会自动获得自动补全功能。

您可以修改ROOT/.ropeproject/config.py文件,将更多目录添加到绳索查找路径中,以提供更好的自动补全功能。

编辑:对我来说,最重要的两个功能是查找文档和直接跳转到函数定义。这取决于正确设置项目的绳索查找路径,如上所述。

文档:将光标放在符号(函数名、类名等)上,然后执行以下操作:

C-c d

这将为您显示有关所讨论符号的文档字符串。

跳转到定义: 将光标放在符号(函数名,类名等)上,然后执行以下操作:

C-c g

这将立即打开包含符号的文件并跳转到定义的开头。当文档不够详细且想要查看实际代码时,这非常有用。此外,在自己的代码中导航时也非常好用。

查找出现次数

C-c f

在光标处智能搜索整个项目中的符号。

代码辅助:

M-/

只需输入函数、类等的前几个字符,即可显示可能的自动补全选项列表。需要注意的是,由于Python的特性,它并不总是完整的列表。

重构: 在Rope->重构下有许多选项,可用于更好地组织代码。大多数选项的使用方法应该是比较容易理解的;一般来说,选择要重构的代码区域,然后选择命令。

编辑: 针对下面的评论,以下是如何将其他路径添加到Python路径中,以便自动完成也可以查找这些符号。

prefs.add('python_path', '~/path/to/virtualenv/lib/python2.6/site-packages')

这段内容需要放在 .ropeproject/config.py 中。


6
这并没有帮助回答问题。重申一下,你如何使用ropemacs?你甚至没有说明如何选择根目录文件夹。 - blokeley
5
Blokely,您已经知道如何选择根项目文件夹。Emacs已经提示您…… - Matthew Talbert
2
此外,我已经给出了关于如何使用ropemacs的最佳建议。在我看来,最好的使用方法是与自动完成一起使用。这样做时,你甚至不需要太多了解它的知识,它只是在后台为你提供补全。 - Matthew Talbert
2
我已经添加了几个基本命令。实际上,这比我找到的任何关于如何使用它的建议都要好得多,所以我希望它能有所帮助。 - Matthew Talbert
1
哦,我明白了。在按下M- /之后,我只需要在迷你缓冲区中按TAB键,或者输入我要查找的符号的一部分,然后按TAB键即可。以前我尝试在输入“Image.”之后立即使用M- /,然后它会显示“Completion for Image.:”,什么也没有,我认为这意味着它找不到任何完成。 - Headcrab
显示剩余4条评论

13

看起来 README.txt 文件已经移动到此目录 https://bitbucket.org/agr/ropemacs/src。 - Markus Peröbner

10
你可以使用 rope-open-project 命令来设置根目录。一旦你设置好了根项目,就会创建一个 .ropeproject 目录。
在这个目录下,有一个 config.py 文件,其中包含了钩子函数,你可以在项目设置完成后运行(python)代码。 project_opened(project): 函数是一个很好的地方来运行代码。通常我会激活虚拟环境 imp.load_source('/path-to-env/activate_this.py'),这样我就可以获取虚拟环境中其他库的源覆盖率。

有关设置虚拟环境的更多信息,请参见http://almostobsolete.net/rope-and-virtualenv.html。 - scytale
rope-open-project does not exist when I do M-x - alper

3

如果要使用ropemacs依赖的绳索库,请参阅:

绳索概述

其中详细描述了每个重构的功能,例如提取方法。请注意,根据作者的说法,此文档有点过时。但是,它应该提供足够的介绍来开始使用绳索的功能。

要在Emacs中执行ropemacs命令,您可以尝试以下一种或多种方法:

  1. 使用自述文件文档链接中的“键绑定”部分,作为学习映射的指南。这是从freyley的回答中获得的建议。
  2. 如果您无法记住键绑定,则执行M-x rope-<specific command name>并填写相关的重构名称。例如,提取方法将是M-x rope-extract-method
  3. 在Emacs中选择<menu-bar> -> Rope。例如,对于提取方法,则选择<menu-bar> -> Rope -> Refactorings -> Extract Method。它还将显示相关的键绑定(例如,C-c r m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接