2012-03-14 4 views
2

Eclipseはすでに「ソースコード修飾子」と呼ばれる非常に印象的で便利な機能を持っています(より良い名前をお勧めします)。インプレース(「クイックアシスト」など)のソースコード修飾語?

たとえば、「Quick Fix」、「Word Completion」、「Externalize Strings」など、メニュー(またはキーの組み合わせ)でソースコードを変更する機能があります。

さて、私は自分「ソースコードの修正」機能を追加するために探しています:私はしたいと思います:

  1. ハイライト(選択)任意の文字列。
  2. 右クリックしてください
  3. 私が書いた関数を使って、文字列を別の文字列に「翻訳」するメニュー項目を呼び出します(Javaの方が望ましい)。現在のデフォルトコンテキストメニューの「クイックフィックス」または「置換」と同様です。

これはEclipseで可能ですか?

もしそうなら、これを達成するために何をする必要がありますか?

+1

を視覚化するのに役立ちます何かありますか?あなたが達成しようとしていることを説明することができますか、もっと単純な解決法があるかもしれません。 –

+0

@Deepak Azadありがとう。たとえば、 'old_c_style_naming_convents'という形式の変数名を取って、それらを自動的に' modernJavaStyleNamingConvents'に変換したいと思います。私はすでにそれを行うJavaコードを書いています(これは簡単な方法ですが)。クイックアシストに接続する方法はわかりません。 –

答えて

2

短い答え:

迅速なアシストは、JavaコードのASTを変更する必要があります。基本的には、org.eclipse.jdt.core.dom.SimpleNameノードを必要なノードに置き換える必要があります。

長い答え:

org.eclipse.jdt.ui.quickAssistProcessors拡張ポイントは、独自のJavaコード迅速なアシストを貢献することができます。

拡張ポイントの新しい拡張子を作成するには、最初にplugin.xmlに必要な拡張子を指定する必要があります。たとえば、JDTは、次のプロセッサ

<extension 
     point="org.eclipse.jdt.ui.quickAssistProcessors"> 
     <quickAssistProcessor 
      name="%defaultQuickAssistProcessor" 
      class="org.eclipse.jdt.internal.ui.text.correction.QuickAssistProcessor" 
      id="org.eclipse.jdt.ui.text.correction.QuickAssistProcessor"> 
     </quickAssistProcessor> 
    </extension> 

(個々の属性の説明については、拡張ポイントのマニュアルを参照してください)

を定義する次に、あなたはorg.eclipse.jdt.ui.text.java.IQuickAssistProcessorインターフェイスを実装するクラスを作成する必要があり、このクラスのASTを変更します。 (このクラスは、拡張を宣言しながら、あなたが指定したものと同じである)

JDTはクイックフィックスとクイックアシストを貢献するために使用することができ、補正案について、次のデフォルトの実装を提供し、右IJavaCompletionProposalを供給。

  • ChangeCorrectionProposal
  • CUCorrectionProposal
  • ASTRewriteCorrectionProposal

あなたがASTRewriteを使用する場合は、ASTRewriteCorrectionProposalを作成する必要があります。

ASTViewプラグイン

これは、あなたが「翻訳」によって、正確に何を意味するJavaソースファイルのAST http://www.eclipse.org/jdt/ui/astview/index.php

+0

これは素晴らしい答えです。私は何か良いことを期待できるかどうかはわかりません。しかし、私はここからそれがかなり関わっていると煩わしいと認めなければなりません。あまり複雑ではないことを望んでいました。私は時間があればこのASTを探検しなければなりませんが、今は+1です。 **私が望むものを実装するための答えが**より速く**掲載されていない場合は、受け入れ+ 50を受け取ります。 –

+1

実際に私は、あなたの質問が私に、早急な支援に貢献する文書がまだ存在しないこと、そしてJDTヘルプに追加する必要があることを認識させてくれたことに感謝します:-) –

+1

ASTは学ぶのが難しいかもしれません。私はあなたがそれを試してくださいと思うより多くのそのような 'クイックアシスト'を念頭に置いて。 (もしあなたがどこかでつかまえれば、私はあなたを助けることができます)。しかし、これが単なるものであれば、私は代替アプローチを探すだろう。正規表現を使ってマッチを見つけ、あなたが書いたコードを使ってそれらのマッチを置き換えます。 –

1

正しい名前は「Quick Assist」です。クイックアシストを作成するためのコードを書く必要があります。

+0

ありがとうございます!それは私が必要なもののように見えます。どのようなコードを書いていますか、どこに配置すればいいですか? –