お品書き

概要 *

fileigsearch-2008.01.06.zip

インクリメンタルサーチ中に

  • マッチした候補を反対側のウィンドウに列挙
  • エスケープシーケンスの理解とそのトグル
  • *case-fold-search*の値のトグル
  • Migemo検索,曖昧検索,正規表現検索,通常検索の切り替え
  • 検索語のハイライト
  • 検索対象のバッファを切り替え

ができます。

動作環境 *

設定 *

NetInstallerで導入した方は 1 は不要です
(ni-autoload)している方は 2 の requireは不要です

  1. $XYZZY/site-lisp/以下にコピーし、バイトコンパイルしてください
  2. .xyzzy や siteinit.l に以下を参考に記述し、
    siteinit.lに書いた人は再ダンプしてください
    (require "igsearch") ; ni-autoloadしている人は不要
    (setf *igsearch-init-state* :migemo) ; 最初はmigemo
    (setf *igsearch-escape-sequence* t)  ; エスケープシーケンスを理解する
    (setf *igsearch-grep* nil)           ; 候補列挙はいらない
    もっと詳しく知りたい方はソースの「カスタマイズ用変数ここから」周辺を見てください。

使い方 *

C-s,C-rでインクリメンタルサーチを開始してください。
M- 系のキーバインドを追加するために
ESCESC ESCに変更されたこと以外はオリジナルからの変更点はないはずなので、
そんなに迷わないはず

インクリメンタルサーチ中のキーバインド

C-.次のバッファに切り替えます。
C-,前のバッファに切り替えます。
C->エスケープシーケンスを理解したりしなかったりします
モードラインにESCと出ていたら理解します。
escと出ていたら理解しません。
C-<大文字小文字の区別をしたりしなかったり、
大文字の時だけしたりします。
モードラインにCASEと出ていたら区別します。
caseと出ていたら区別しません。
Caseと出ていたら全て小文字の時だけ区別しません。
C-d検索語を1文字削除します。(C-hと違って戻りません)
Migemoで検索中ならばMigemoをオフにします。
C-f検索後をバッファから1文字追加します
Migemoで検索中ならばMigemoをオフにします。
C-tregexp,migemo,approx,normalの順に切り替えます。
migemoとapproxを未導入の場合は飛ばします。
C-o候補表示バッファに移動
C-w検索語をバッファから1単語追加します。
Migemoで検索中ならば通常検索に切り替えます。
ESC ESCインクリメンタルサーチを中止します。
M-c検索語のハイライトを終了後も残すかどうか切り替えます。
M-r正規表現検索に切り替えます。
既に正規表現検索なら通常検索に切り替えます。
M-aApprox-searchが入っていれば曖昧検索に切り替えます。
既に曖昧検索なら通常検索に切り替えます。
M-mMigemoが入っていればMigemo検索に切り替えます。
既にMigemo検索なら通常検索に切り替えます。
M-pヒストリを一つ戻ります。[Up]と同じです。
M-nヒストリを一つ進みます。[Down]と同じです。
\通常通り、\を検索語に追加します。
正規表現検索中であれば通常検索に切り替えます。




候補表示バッファのキーバインド

ESCバッファを閉じます
qバッファを閉じます
TABカーソルのある行を反対側のウィンドウで表示します
SPCカーソルのある行を反対側のウィンドウで表示し、
反対側のウィンドウにカーソルを移動させます。
RETカーソルのある行を反対側のウィンドウで表示し、
候補表示バッファを閉じます。
C-n[Down] + [TAB]
C-p[Up] + [TAB]
fflush lines(正規表現を入力し、マッチする行を削除)します。
kkeep lines(正規表現を入力し、マッチしない行を削除)します。

注意 *

  • 候補表示バッファにC-oで移動した後に色々
    (ウィンドウ分割したり元のバッファを消したりバッファを移動したりフレームを移動したり etc)
    やるとエラーが出たり挙動がおかしくなったりするので優しく取り扱ってください。
  • 正規表現検索をしたい時はとりあえずC-tでNormalにして正規表現を入力し、
    その後にC-tでRegexpに切り替え、C-sすることをお勧めします。

履歴 *

2008.01.06

  • igsearch-minibuffer-end-of-buffer追加
  • igsearch-minibuffer-beginning-of-buffer追加
  • 正規表現での検索で1文字目に^を入力すると固まったのを修正

2007.03.05

  • 前回の変更でミニバッファ以外でのC-dが潰されていたのを修正

2007.03.02

  • ミニバッファで履歴を検索中にC-dで履歴を消せるようにした

2007.02.28

  • エラー修正
  • ミニバッファの履歴の区切りを変更可能にした

2007.02.27

  • 使い辛かったのでigsearch-toggle-grepのデフォルトのキーバインドをM-tに変更
  • 名前変更 igsearch-rotate-method igsearch-toggle-method
  • ミニバッファ中の履歴表示の前回分を消していなかったのを修正
  • ミニバッファで履歴を検索した後にエラーが出ていたのを修正
  • ミニバッファで履歴に改行が含まれていてもちゃんと選択できるようにした

2007.02.19

  • 折り返していると強調表示されない場合があったのを修正
  • 特定のバッファは常に候補を列挙しない設定追加

2007.02.15

  • キーボードマクロ実行時にちらつかないようにした
  • igsearch-refresh-highlight-toggleを候補表示バッファでも出来るようにした
  • ミニバッファにいる時にC-s/C-rで履歴からインクリメンタルサーチするようにした
  • 検索語の強調表示を元に戻す場合はインクリメンタルサーチ前の属性を元に戻すようにした

2007.02.11

  • 一覧表示のトグル機能追加
  • 一覧表示のトグルをしたら即表示/非表示するようにした

2007.02.08

  • outline-tree2がないとバイトコンパイルできなかったのを修正
  • インクリメンタルサーチ中にC-bを押した時の挙動をいろいろ変更

コメント *

最新の10件を表示しています。 コメントページを参照

  • 835行はscan-bufferかなにかが抜けているような気がします。839行はstring/=でもいいと思います。 -- 2007-02-27 (火) 16:01:27
  • 835行にscan-bufferはいらないかもしれませんが、ともかく836行の(match-beginning 0)がnilの時にエラーになるようです。 -- 上のコメントをした人? 2007-02-27 (火) 22:33:05
  • igsearch-minibuffer-next-lineで*isearch-current-string*が「l」の時に「----・・・」の部分も選択されてしまうようです。 -- 上のコメントをした人? 2007-02-27 (火) 23:15:44
  • scan-bufferが抜けていたのは修正しました。string/=はオプションがいっぱいあるから遅い、とどこかでみたような気がするので避けるようにしてるのですが・・・どうなんでしょう。区切りはmigemo使用時にlineが半角ハイフンの連続にマッチするようなので、違うものにしておきました。気に入らなければ適当に変えてみてください。 -- シロ? 2007-02-28 (水) 14:14:13
  • ありがとうございます。しかし、*igsearch-minibuffer-candidate-splitter*はバッファバーを表示していると(window-columns)を正しく取得できないようなのと、ウィンドウの大きさを変えることもありうることから区切りを生成する関数を作ってその都度生成した方がいいような気がします。ちょっと計測してみましたが、確かにバイトコンパイルすると(しない場合にはほとんど同じ)「(when (string/=」よりも「(unless (equal」の方が速いですね(しかも結構違う)。知らなかった.. -- 上のコメントをした人? 2007-02-28 (水) 15:56:22
  • setqではなく、setfを使うのも速度的な理由でしょうか? -- 上のコメントをした人? 2007-02-28 (水) 16:02:49
  • setf,setqは速度はほとんど変わらないみたいです。listのcdrに値を入れる場合などの他はsetqでもいいような気がするのですが。別にどちらでもいいのかもしれませんが。 -- 上のコメントをした人? 2007-02-28 (水) 16:09:11
  • (window-columns)は確かにそうですね・・・ただの区切りなのではみ出しても特に問題はないとも思いますが^^;string=とequalでは殆ど差が無いので、string/=等の一致しないインデックスを返す関数が遅いんだと思います。setfは最初にlispを勉強したときにsetqではなく汎用的なsetfを使いましょうと書いてあったので使ってるだけです。速度も変わりませんし、まあ、いいかなぁ?と。 -- シロ? 2007-02-28 (水) 22:14:21
  • 些細なこと *igsearch-grep-current-stirng* → *igsearch-grep-current-string*。"string" が "stirng" になってる。 -- Preken? 2015-03-29 (日) 08:02:49
  • This was so helpful and easy! Do you have any arieclts on rehab? -- Lin? 2015-12-12 (土) 10:41:02
お名前:

Tag: xyzzy script



添付ファイル: fileigsearch-2008.01.06.zip [詳細] fileigsearch-2007.03.05.zip 912件 [詳細] fileigsearch-2007.03.02.zip 522件 [詳細]
トップ   編集 凍結 差分 BACKUP 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-01-06 (日) 13:59:00 (3371d)