「ポップアップメニューでジャンプ」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「= 概要 = ポップアップメニューで検索にヒットした箇所へジャンプできます。 = 機能 = * 選択した文字列(選択していないと...」 |
非推奨のタグを修正 |
||
| (2人の利用者による、間の5版が非表示) | |||
| 9行目: | 9行目: | ||
= コード = | = コード = | ||
< | <syntaxhighlight lang="javascript"> | ||
// pooupJump.js | // pooupJump.js | ||
// 2014 | // 2014-04-04 | ||
var sel = document.selection | var sel = document.selection | ||
| 17行目: | 17行目: | ||
var s = sel.Text; | var s = sel.Text; | ||
var ty = sel.GetTopPointY( mePosView ); | var ty = sel.GetTopPointY( mePosView ); | ||
var p = sel.GetActivePos(); | |||
sel.Find( s, meFindNext + meFindAround ); | sel.Find( s, meFindNext + meFindAround ); | ||
sel.SetActivePos( p ); | |||
// ポップアップメニューでジャンプ先リスト | // ポップアップメニューでジャンプ先リスト | ||
| 29行目: | 31行目: | ||
var p = 0; | var p = 0; | ||
for( var i = 0, n = ary.length; i < n ; i++ ){ | for( var i = 0, n = ary.length; i < n ; i++ ){ | ||
if ( ary[i].indexOf( s ) >= 0 ){ | if ( ary[i].toLowerCase().indexOf( s.toLowerCase() ) >= 0 ){ | ||
var item = ary[i].replace( /^\s*|\t/g, "" ) | var item = ary[i].replace( /^\s*|\t/g, "" ) | ||
item = ( item.length > menu_width + 1 )? item.slice( 0, menu_width ) + "..." : item ; | item = ( item.length > menu_width + 1 )? item.slice( 0, menu_width ) + "..." : item ; | ||
| 43行目: | 45行目: | ||
sel.SetActivePoint( mePosView, line.indexOf( s ) + s.length + 1, r, false ); | sel.SetActivePoint( mePosView, line.indexOf( s ) + s.length + 1, r, false ); | ||
sel.CharLeft( true, s.length ); | sel.CharLeft( true, s.length ); | ||
ScrollY = r-10; | |||
}; | }; | ||
}; | }; | ||
}; | }; | ||
</ | </syntaxhighlight> | ||
= | = 変更履歴 = | ||
* 2014 | * 1.0.0 (2014-04-04) | ||
** 初版 | |||
= その他 = | = その他 = | ||
* 不具合があったら教えていただけると幸いです。 | * 不具合があったら教えていただけると幸いです。 | ||
2024年9月6日 (金) 23:42時点における最新版
概要[編集]
ポップアップメニューで検索にヒットした箇所へジャンプできます。
機能[編集]
- 選択した文字列(選択していないときはカーソルのある語)を検索します。
- ヒットした行をポップアップメニューに表示し、選択するとその行へジャンプします。
- 同一行にヒットする箇所が複数あったときは最初のヒット箇所にジャンプします。
- 検索文字列の強調解除は、変更していなければ「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;
};
};
};
変更履歴[編集]
- 1.0.0 (2014-04-04)
- 初版
その他[編集]
- 不具合があったら教えていただけると幸いです。
スポンサーリンク