「ポップアップメニューで検索先にジャンプ」の版間の差分
ナビゲーションに移動
検索に移動
内容を「= 概要 = ポップアップメニューで検索にヒットした箇所へジャンプできます。 == 機能 == * 選択した文字列(選択していないと…」で置換 タグ: 置換 |
<source>タグを<syntaxhighlight>タグに置き換える |
||
| 9行目: | 9行目: | ||
== コード == | == コード == | ||
< | <syntaxhighlight lang="javascript"> | ||
// pooupJump.js | // pooupJump.js | ||
// 2014/04/04 | // 2014/04/04 | ||
| 49行目: | 49行目: | ||
}; | }; | ||
}; | }; | ||
</ | </syntaxhighlight> | ||
== 履歴 == | == 履歴 == | ||
2023年5月16日 (火) 23:20時点における版
概要
ポップアップメニューで検索にヒットした箇所へジャンプできます。
機能
- 選択した文字列(選択していないときはカーソルのある語)を検索します。
- ヒットした行をポップアップメニューに表示し、選択するとその行へジャンプします。
- 同一行にヒットする箇所が複数あったときは最初のヒット箇所にジャンプします。
- 検索文字列の強調解除は、変更していなければ「Alt+F3」です。
コード
// pooupJump.js
// 2014/04/04
var sel = document.selection
if ( sel.isEmpty ){ sel.SelectWord(); };
var s = sel.Text;
var ty = sel.GetTopPointY( mePosView );
var p = sel.GetActivePos();
sel.Find( s, meFindNext + meFindAround );
sel.SetActivePos( p );
// ポップアップメニューでジャンプ先リスト
var menu_width = 66;
if ( "\t .,;:(){}[]+-=\"\\".indexOf( s ) < 0 && s.length > 0 ){
var menu = CreatePopupMenu();
var ary = [];
for( var i = 0, n = document.GetLines( meGetLineView ); i < n ; i++ ){
ary.push( document.GetLine( i+1, meGetLineView ));
};
var p = 0;
for( var i = 0, n = ary.length; i < n ; i++ ){
if ( ary[i].toLowerCase().indexOf( s.toLowerCase() ) >= 0 ){
var item = ary[i].replace( /^\s*|\t/g, "" )
item = ( item.length > menu_width + 1 )? item.slice( 0, menu_width ) + "..." : item ;
var flags = ( (i+1) == ty )? meMenuChecked : 0 ; // meMenuGrayed
menu.Add( ( " " + (i + 1) ).slice( -4 ) + " : " + item, i + 1, flags );
p++;
};
};
if ( p > 1 ){ // ポップアップメニューを表示するのは、検索ヒット行が複数のとき。
var r = menu.Track( mePosMouse ); // mePosMouse
if ( r > 0 ){
var line = document.GetLine( r, meGetLineView );
sel.SetActivePoint( mePosView, line.indexOf( s ) + s.length + 1, r, false );
sel.CharLeft( true, s.length );
ScrollY = r-10;
};
};
};
履歴
- 2014/04/04 初版
その他
- 不具合があったら教えていただけると幸いです。
スポンサーリンク