2009-04-09 5 views
4

マイタグリスト:VIM:VIMタグリスト要素とコードスニペットの間のビーミング? Cコードで

マクロ
|| MIN_LEN
|| MAX_ITERATIONS
|| - typedef
||セル
|| source_cell
|| - 変数
|| len_given

タグリスト要素(ドメイン):

A = {MIN_LEN, MAX_ITERATIONS, cell, source_cell, len_given} 

コードスニペット(終域):

B = {"code_MIN_LEN", "code_MAX_ITERATIONS", ..., "code_len_given"} 

目標:セットAとBとの間の全単射を持っています。

例:私はA内の任意の要素を削除したい、そのようなAからMIN_LEN、などとB AまたはBのいずれかでその要素を除去することにより、質問

は全単射をquaranteeする方法はありますAとBのどちらか一方の変更が他方のセットの変更をもたらすように、AとBの間にあるか?

+0

これには回答がありますか?私は完全に質問を理解しているかどうかはわかりませんが、少し詳しく説明したいのであれば、解決できると確信しています。 – DrAl

+0

Al:あなたのご注意ありがとうございます。いいえ、私は答えを受け取っていませんでした。 –

+0

これはVimスクリプトやCコード自体にありますか?別の行が変更された場合、またはVimスクリプトのtaglist()関数からタグを使って何かをしようとしている場合、自動的にCコードの行を変更しようとしていますか?どちらの場合でも、可能であれば、もう少し説明すれば助けになると思います... – DrAl

答えて

3

私はあなたがそうすることを強く疑っています。 taglistプラグインは、ctagsを使用してコード内のシンボルを収集し、横方向に分割して表示します。横分割には読み込み情報が含まれています(そのウィンドウで作業しようとすると、vimはそのバッファに対して変更可能であることを知らせます)。

あなたが達成したいのは、変更しているソースコードを非常に複雑に解析することを意味します。自動的に名前を変更する(タグリストバッファ内の関数名エントリとソース内のすべてのインスタンスを変更すると仮定して)単純なタスクであっても、ctags機能やタグリストを超えているかなり複雑な解析が必要です。全単射の関係をすべて削除して維持することはさらに複雑です。削除したいマクロを使用するprintf行があるとします。その行に何が起こるはずですか?

タグリストは、コードをブラウズするための素敵なプラグインですが、自動リファクタリングには適していません(これはあなたが望むものです)。達成するために)。

編集:計算上の複雑さに関しては、最悪の場合は、すべてのキーストロークでドキュメント全体をスカウトして、統合可能な新しいラベルの出現を探しなければならないということです。 vimの構文ハイライトの計算上の複雑さを認識していません(タグを抽出するのにも便利ですが、適切なトークン化を介して)、私はそれを非常に推測するだろうパースされたデータの量は非常に限られています(トークンを抽出してそのコンテキストを理解するために解析するための大きな構造を持つことはほとんどありません)。いずれにせよ、これはタグリストの仕組みではありません。タグリストはすべてのvim呼び出しでctagsを実行しますが、入力中はドキュメントをライブ解析しません。これは、Eclipse、XCode、KDevelopなどで行われ、自動または半自動リファクタリング用のツールも提供され、最終的にvimをエディタとして統合することもできます。これらの機能が必要な場合は間違ったツールを間違いなく使用しています。

+0

+1は、ターゲティング解析用です。もう少し明確にすることはできますか?そのようなアルゴリズムの計算上の複雑さは何ですか? –

関連する問題