web-dev-qa-db-ja.com

Emacs:ソースファイル内のサブルーチン/関数/クラスのリストを表示する

私は「FTE」(またはeFTE)と呼ばれるあまり知られていないエディターを何年も使用しています。ソーステキストファイル(C、C++、Fortran、.. ..何がありますか)。この関数を使用すると、ソースファイル内のあるポイントから別のポイントにすばやくジャンプできます。おそらく、FTEの元のショートカットは^I(Control + I)です。 emacsにも同様の機能がありますか? EmacsはFTEよりもはるかに進んでおり、そのような施設を開発した人がいないとしたら、私は驚きます。

ありがとう、ウィラワン

5

M-x occur RET exp RETを試してください。これにより、現在のバッファで発生するすべてのexpが新しいバッファに一覧表示されます。

10
Dror

もちろん、ほとんどの人は、現代の [〜#〜] ide [〜#〜] を使用するように指示しますが、emacsの力を理解していません。個人的には、 [〜#〜] ecb [〜#〜] を使用しているため、emacsは次のようになります。

enter image description here

左側の中央のウィンドウは、現在のソースファイルの機能のリストです。名前を中クリックすると、カーソルがその関数の定義に移動します。

インストールするには、ECB Webサイトの指示に従ってECBをインストールしてから、この行を~/.emacsに追加します(それに応じて場所を変更します)。

(add-to-list 'load-path
             "~/.emacs-LISP/ecb/")

別のオプションは [〜#〜] cedet [〜#〜] ですが、私はそれを使用していません。

8
terdon

使用 Imen

  1. M-X imenu
  2. tabAll.Methods
  3. tabすべてのメソッドを表示
4
cweiske

「サブルーチン/関数/クラスのリスト(またはそのようなもの-構成ファイルで定義する正規表現に応じて)をソーステキストファイルに表示する」とおっしゃいました。今のところ、他の人が反応した親の部分を無視すると、関数などが「in」であるとはどういう意味かは明確ではありません。 "ソースファイル。

特定のソースで定義済みである関数などのリストを表示することについて質問している場合ファイルを作成し、それらの定義間を移動して、EmacsでImenuを確認します。 Emacsのマニュアル、ノードImenuを参照してください。こちらもご覧ください EmacsWiki ページについて Imen

2
Drew

Emacsにはこの機能を取得する方法がいくつかあります。

軽量化の方法は tags を使用します。これは、適切にカスタマイズすることでほとんどの目的に役立ちます。タグファイルを作成し(シェルで、たとえばcd /path/to/project; ctags -e -R .を介して実行)、M-x visit-tags-table RET /path/to/TAGS RETを介して選択すると、たとえば、関数呼び出しでM-.を使用できます。関数定義にジャンプするには、M-x tags-searchで、タグテーブルに記述されているファイルをgrepします。&c。利用可能なツールのかなり詳細な説明については、リンク先のページを参照してください。

より重い方法は、 Semantic 、EmacsLISPで完全に実装されたレクサー/パーサーの組み合わせによるものです。私はタグほどセマンティックに精通していませんが、より一般的に有用な結果と引き換えに、セマンティックは初期設定の負担が重いという印象を受けます。リンクされたマニュアルページに加えて、(Emacs Wikiの記事)[ http://www.emacswiki.org/emacs/SemanticBovinator] はここでさらに役立つかもしれません。

1
Aaron Miller