2011-09-26 6 views
7

私はisearch/search-replace /をコード(コメントや文字列にはありません)でのみ表示したいと思います。Emacsでは、コード領域での操作(つまり検索)方法は?

これは一般的な問題であるに違いないので、これはどのパッケージで既に行われていますか?

これを行う既存のパッケージがない場合、私は、文字化けに基づいて文字列とコメントが隠されているマイナーモードを考えています。 1つはありますか?

+0

を[ここで、関連する議論だ](http://thread.gmane.org/gmane .emacs.devel/129755)のemacs-develにあります。どうやら、問題はあなたがそれらの部分を隠すことができるということですが、置き換えることはそれを考慮に入れず、隠された部分でもそのことを行います。 – Tom

+0

またこちら:http://groups.google.com/group/gnu.emacs.help/browse_thread/thread/757fb08373f9fbf8 –

答えて

0

はい、あなたは正しいです。 HideShowマイナーモードでは、テキストのブロック、特に複数行のコメントを非表示にすることができます。

hide/showコメントは標準パッケージに含まれていませんが、wikiページにはそのトリックを行うコードがあります。

次にisearchコマンドでは、非表示のコメントは考慮されません。

HOWEVER:replaceは隠しブロックを含むバッファ全体で動作します。

+0

emacs 23.2で試してみましたが、いくつかのJavaコードを隠し、検索置換すると隠しブロックの内容が変更されました。まあ、それは本当に質問への答えではありません。 – Tom

+0

はい、置換はバッファ全体で動作します。しかし、isearchは隠しブロックを見ない –

0

チェックアウトnarrowing

+0

おっと、私はその質問から「コード」という言葉が欠けていました。さて、絞り込みはとても素晴らしいので、恥知らずにここで答えを残してください。多分あなたは絞り込みを使うことができ、いくつかのelispで構文テーブルを使うことができます。 –

+0

これを狭める問題は、バッファを連続したブロックに限定することしかできません。 emacsが複数の領域を狭めることをサポートするなら、とてもうれしいでしょう。 – Tom

2

Icicles searchには、これを行う方法がいくつかあります。

  • 検索 "もの"(例えばdefun秒、sexp S、XML要素など)コメント(オプションicicle-ignore-comments-flag)を無視して、:ここでは、2つがあります。つまり、選択したコードセグメントを検索コンテキストとして使用しますが、コード内のコメントやコメント内のコードは無視します。

  • コメントのcomplementを検索してください。たとえば、検索コンテキストを、顔のいずれか(font-lock-comment-faceまたはfont-lock-comment-delimiter-face)でフォントロックされたテキストの補完として定義します(つまり、コメント外のすべてのコードを検索することを意味します)。

検索コンテキストを定義したら、テキストを入力してコンテキストを段階的にフィルタリングしてください。そして、あなたはreplaceをオンデマンドで試合できます。

0

あなたが尋ねることは(Icicles ---上記のother answerを参照)と同じです。

は、次のいずれかを使用して、そのインクリメンタルサーチで検索コンテキストを定義することができます。

  • 正規表現を一致させます。
  • 指定されたテキストまたはオーバーレイプロパティ---検索コンテキストは、プロパティ(例えば、特定の `顔」の値または値の組み合わせ)
  • 与えEmacsのTHING(S式、関数定義、リストを持っているテキストゾーンがあり、文字列、コメントなど)---検索コンテキストは、指定されたTHINGタイプのテキストゾーンです。 -contexts:

はあなたにも補数を検索することができ、検索コンテキストを定義しました。C-M-~を使用して、Isearchでいつでもコンテキストと非コンテキストを検索することができます。

検索時には、デフォルトでは、検索可能な領域が目立たないように、検索されていない領域がわずかに薄暗くなります。コンテキスト検索インクリメンタルサーチでは、これらの2つのライブラリ必要があるために

+0

ここに示したファイルの横に、icicle-stuff全体をロードする場所はありますか? https://github.com/emacsmirror/icicles/archive/master.zip –

+0

@AndreasRöhler:iciclesをダウンロードする方法はたくさんあります。それらは[こちら](http://www.emacswiki.org/emacs/Icicles_-_Libraries)に記載されています。たとえば、[MELPA](http://melpa.milkbox.net/)からIciclesを入手することができます。 (ただし、ここで述べたIsearch +ファイルは、Iciclesとは独立しています。 – Drew

関連する問題