2011-04-14 39 views
2

我從netbeans切換到emacs,我對變化非常滿意。我最缺少的是autocompletion並跳轉到定​​義。爲了得到這個,我安裝了Rsense。它適用於寶石代碼,但是,根據我定義的方法,我無法跳到我的Rails項目的定義或自動完成。如何使RSense自動完成並跳轉到rails項目的定義?

我試圖將我的項目的加載路徑添加到Rsense的load_path配置,但它仍然不起作用。

有誰知道如何得到這個工作?

+0

是否安裝了「自動完成模式」? (這是RSense完成所必需的。)Emacs中是否提供了「ac-complete-rsense」和「rsense-jump-to-definition」命令(例如,帶有「M-x」)? – 2011-12-12 05:07:51

+0

是的。我使用自動完成rsense。但是,仍然無法通過使用Rsense來達到我自己的定義。Rtags一直在提供我自己的答案中所述的功能。 – 2011-12-16 16:57:02

回答

2

您可以使用標籤瀏覽文件並直接跳轉到函數定義。 我使用Exuberant Ctags(它得到了Ruby支持)。您可以從here下載它。

我假設你正在使用windows。如果你第一次使用emacs,讓標籤最初在windows上工作是一件痛苦的事情。

這是我遵循的步驟:

  1. here安裝Cygwin。
  2. 在您的環境變量PATH中包含cygwin \ bin \文件夾。例如。 here
  3. 安裝exhuberant ctags。請注意,emacs有時可能會有內置的ctags。稍後,您將不得不在cygwin中使用ctags命令來創建標籤。那時你可能會遇到一些錯誤,因爲它使用emacs中的ctags而不是exuberant ctag。
  4. 安裝ctags後,將其添加到環境變量PATH中。
  5. 如果您有一個文件數量相對較少的小項目(< 500)。所以你只需要一個全局的TAGS文件。對於那個打開的cygwin,改變你的目錄到你的項目的根目錄,並鍵入命令ctags -R -eCheck this out其他方法
  6. 您的標籤文件將被創建。它將被命名爲「標籤」,並將出現在項目的根目錄中。
  7. 接下來打開emacs,並瀏覽代碼。如果你遇到一個函數並想跳轉到它的定義,把你的光標放在函數的名字上,然後按M-.你的小緩衝器應該顯示如Find tag (default <function-name>):按回車鍵和瞧!你神奇地運送到功能定義! 注意:您可能必須在第一次使用M-.時指定TAGS文件這隻需要在emacs啓動後執行一次。您還可以修改.emacs文件以在啓動時自動接收標記文件。

參考thisthis瞭解更多關於emacs標籤相關命令的信息。

+0

Ctags是否支持Ruby?我一直在使用Rtags:http://simple-and-basic.com/2008/10/using-rtags-ang-gtags-for-coding-ruby.html – 2011-12-13 11:08:59

+0

這很好,但不幸的是它沒有解決自動完成 – 2011-12-14 16:36:00

+0

您是否嘗試過使用emacs進行默認自動完成? 'M- /'? – Pulimon 2011-12-15 06:38:00

1

到現在爲止,我一直在使用rtags來跳轉到定義。這並不完美,但它在很多情況下都有效。